En java el paquete javax.cryto contiene muchas clases. Este paquete esta pensado para realizar tareas de criptografía en general, por lo que para hacer las tareas más sencillas resulta un poco complicado.
Cuando se quiere codificar información utilizando una contraseña lo primero es obtener un objeto del tipo SecretKey a partir de la contraseña. Por ejemplo:
keySpec keyspec = new
PBEKeySpec (sPasswordPhrase.toCharArray(),
SALT, ITERATION_COUNT);
Secretkey secretkey =
javax.cryto.SecretKeyFactory.getInstance
(”PBEWithMD5AndDES”).generateSecret
(keySpec);
En este ejemplo la variable spasswordpharase contine una cadena de texto correspondiente a la contraseña. COn el método toCharArray se convierte en cadena de texto de un array de datos de tipo Char. Salt es un array de bytes que podria ser por ejemplo:
byte[] Salt = {
(byte) 0xA9, (byte) 0×9B, (byte) 0xC8, (byte) 0×32, (byte) 0×56, (byte) 0×35, (byte) 0xE3};
ITERATION_COUNT es un valor númerico que en principio, puede ser cualquiera. Con estos datos y el constructor de la clase PBEKeySpec se crea un objeto KeySpec. El metodo getinstance de la clase SecretFactory recibe el nombre del algoritmo que se va a utilizar y devuelve objetos SecretKey.
Finalmente el metodo generateSecret devuelve el objeto buscado. Una vez que se ha obtenido el objeto secretkey resulta facil encriptar y desencriptar cadenas de texto. Por ejemplo:
Cipher cipher = cipher.getInstance
(secretkey.getAlgorithm());
AlgorithmParameterSpec
algorithmparameterSepc = new
PBEparameterSpec( SALT, ITERATION_COUNT);
Cipher.init (cipher.encrypt_mode,
secretkey, algorithmParametersepc);
byte[] dataClean = s.getBytes(UTF-8″);
byte[] dataEncryted =
cipher.doFinal(dataClean);
El metodo getinstance de cipher requiere que se pase como parametro el algoritmo empleado para la encriptación. teniendo la contraseña en forma de objeto SecretKey, el metodo getAlgorithm devuelve el algoritmo. El menaisco utiliza arrays en bytes tanto de entrada como de salida.
la descodificación mañana:D:D