Categorías destacadas
programacion php    
Lista de foros

Encritación de claves


sgarcri
17 de Junio del 2009

Buenas. Tengo el siguiente problema. Desde mi aplicación java necesito acceder a determinados servicios con usuario y contraseña. Para no tener mi contraseña en plano en mi fichero de properties, la quiero guardar encriptada con AES. Mi problema me surge al desencriptar. Ya tengo el código para ello, pero necesito haber encriptado y desencriptado mi contraseña con la misma clave (ya que la contraseña encriptada estará en el properties de la aplicación y no cambiará).
Mi pregunta es ¿qué clave utilizo para que sea segura? y ¿cómo almaceno la clave para que sea seguro (en el propio código, en un properties, ....)?
Muchas gracias.

Mi código es:
public static String encriptar(String sDatos) throws Exception {
String sResultado = null;
if(LogMgr.isDebugEnabled()){
LogMgr.debug("Seguridad.encriptar >> Iniciando metodo");
}
//Establecemos el algoritmo de encriptacion
Cipher aCipher = Cipher.getInstance(InterfaceConstantes.ENCRIP_ALGORITMO);
//Establecemos la clave de encriptacion
SecretKeySpec aSecretKeySpec = new SecretKeySpec(sClave, InterfaceConstantes.ENCRIP_ALGORITMO);
//Iniciamos el encriptador
aCipher.init(Cipher.ENCRYPT_MODE, aSecretKeySpec);
//Encriptamos
byte[] btDatosEncriptados = aCipher.doFinal(sDatos.getBytes(InterfaceConstantes.CODIFICACION_TEXTO));

//Recuperamos los datos sncriptados en un String
//BASE64Encoder aEncoder = new BASE64Encoder();
sResultado = new String(Base64.encodeBase64(btDatosEncriptados)).replaceAll("rn", "");
if(LogMgr.isDebugEnabled()){
LogMgr.debug("Seguridad.encriptar >> Fin metodo");
}
return sResultado;
}
public static String desencriptar(String sDatosEncriptados) throws Exception {
String sResultado = null;
if(LogMgr.isDebugEnabled()){
LogMgr.debug("Seguridad.desencriptar >> Iniciando metodo");
}

//BASE64Decoder aDecoder = new BASE64Decoder();
//Recuperamos datos encriptados en array de bytes
byte[] btDatosEncriptados = Base64.decodeBase64(sDatosEncriptados.getBytes());
//byte[] btDatosEncriptados = aDecoder.decodeBuffer(sDatosEncriptados);
//Establecemos algoritmo de encriptacion
Cipher aCipher = Cipher.getInstance(InterfaceConstantes.ENCRIP_ALGORITMO);
//Establecemos la clave de encriptacion
SecretKeySpec aSecretKeySpec = new SecretKeySpec(sClave, InterfaceConstantes.ENCRIP_ALGORITMO);
//Inicializamos el encriptador
aCipher.init(Cipher.DECRYPT_MODE, aSecretKeySpec);
//Encriptamos los datos
byte[] raw = aCipher.doFinal(btDatosEncriptados);
//Pasamos resultado a String
sResultado = new String(raw, InterfaceConstantes.CODIFICACION_TEXTO);

if(LogMgr.isDebugEnabled()){
LogMgr.debug("Seguridad.desencriptar >> Fin metodo");
}

return sResultado;
}

 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon