AESCodec.java
El paquete util; Importación java.security.Key;
Importación javax.crypto.Cipher; Importación javax.crypto.KeyGenerator;
Importación javax.crypto.SecretKey;
Importación javax.crypto.spec.SecretKeySpec;
Importación org.apache.commons.codec.binary .Base64;
pública clase AESCodec {
// algoritmo de clave
privada estática final cadena KEY_ALGORITHM = "AES" ;
// cifrado y descifrado el algoritmo / modo de trabajo / modo de relleno, compatibilidad con el modo de llenado PKCS5Padding Java6.0, modo de relleno de soporte PKCS7Padding BouncyCastle
privada estática final CIPHER_ALGORITHM = cadena de caracteres "AES / ECB / PKCS5Padding" ;
//Por defecto clave
privada estática final cadena de clave = "FFK / B5sFXeITk6cXV5rTNA ==" ;
/ **
* generar una clave
* /
pública estática Cadena InitKey () lanza la excepción {
// generador de claves instantiate
la KeyGenerator kg = KeyGenerator.getInstance (KEY_ALGORITHM );
// inicializar generadores de claves: AES longitud de clave requiere 128 192 256 bit
kg.init (128 );
// generar la clave de
un secretKey secretKey = kg.generateKey ();
// Obtener codificado en binario clave forma
de retorno el Base64. encodeBase64String (secretKey.getEncoded ());
}
/ **
* clave de conversión
* /
pública estática clave TOKEY ( byte [] Tecla) lanza la excepción {
regresar nuevos nuevos SecretKeySpec (Key, KEY_ALGORITHM);
}
/ **
* datos cifrados
*
* @param de datos los datos se codifiquen
* @param clave clave
* @return datos cifrados
* * /
pública estática String cifrar (datos String, String key) lanza la excepción {
// restaurar la clave
clave K = TOKEY (Base64.decodeBase64 (clave));
// modo de uso relleno PKCS7Padding, por lo que se han escrito (es decir, llamada BouncyCastle implementación del componente)
//objeto Cipher se crea una instancia, se utiliza para hacer el cifrado real de
Cipher cifrado = Cipher.getInstance (CIPHER_ALGORITHM);
// objeto Cipher se inicializa, el modo de cifrado es conjunto
cipher.init (Cipher.ENCRYPT_MODE, K);
// realizar operaciones criptográficas. Resultados generalmente codificadas para la transmisión de la codificación Base64
retorno Base64.encodeBase64String (Cipher.doFinal (data.getBytes ()));
}
/ **
* datos descifrados
*
* @param de datos para ser descifrado de datos
* @param Key clave
* @return descifrado de datos
* * /
pública estática String descifrar (datos String, String clave) lanza la excepción {
clave K =TOKEY (Base64.decodeBase64 (Key));
Cipher cifrado = Cipher.getInstance (CIPHER_ALGORITHM);
// Cipher objeto se inicializa, se proporciona a modo de descifrado
cipher.init (Cipher.DECRYPT_MODE, K);
// realizar operaciones de descifrado
vuelva nuevo nuevo String ( Cipher.doFinal (Base64.decodeBase64 (datos)));
}
/ **
* datos cifrados
*
* @ param datos de los datos se codifiquen
* @param tecla
* @return datos cifrados
* * /
pública estática String cifrar (String datos) lanza la excepción {
volver al cifrar (datos, CLAVE);
}
/ **
* datos descifrados
*
* @ param datos a ser descifrado de datos
* @param clave Clave
* @return descifrado de datos
* * /
pública estática String descifrar (datos String) lanza la excepción {
volver al descifrar (datos, CLAVE);
}
pública estática void main (String [] args) lanza la excepción {
// System.out.println ( "clave:" + InitKey ());
cadena de datos = "123456" ;
String cifrar = el cifrar (datos);
System.out.println (cifrar);
System.out.println (decrypt (cifrar));
}
}