Los más comunes incluyen: contraseña de usuario de base de datos, contraseña de usuario de plataforma SMS, contraseña fija para verificación entre sistemas, etc.
Esta clase de herramienta se refiere a la implementación de la Sección 5.3 del libro "Práctica de desarrollo de aplicaciones empresariales Spring.3.x".
El código completo y la información de anotaciones son los siguientes:
Copie el código de código de la siguiente manera:
paquete com.cncounter.util.comm;
importar java.security.Key;
importar java.security.SecureRandom;
importar javax.crypto.Cipher;
importar javax.crypto.KeyGenerator;
importar sun.misc.BASE64Decoder;
importar sun.misc.BASE64Encoder;
clase pública DESUtils {
// llave
clave de clave estática privada;
// semilla CLAVE
Cadena estática privada KEY_STR = "[email protected]";
// constante
Cadena final estática pública UTF_8 = "UTF-8";
cadena final estática pública DES = "DES";
// inicialización estática
estático{
intentar {
// generador de LLAVES
Generador KeyGenerator = KeyGenerator.getInstance(DES);
//Inicialización, operador aleatorio seguro
generador.init(new SecureRandom( KEY_STR.getBytes(UTF_8) ));
// Generar clave
clave = generador.generateKey();
generador = nulo;
} captura (Excepción e) {
lanzar nueva RuntimeException(e);
}
}
/**
* Cifre la cadena de origen y devuelva la cadena cifrada codificada en BASE64.
* @param fuente cadena fuente, texto sin formato
* @return cadena de texto cifrado
*/
codificación de cadena estática pública (fuente de cadena) {
intentar {
// Obtiene la matriz de bytes según el formato de codificación
byte[] fuenteBytes = fuente.getBytes(UTF_8);
// modo de cifrado DES
Cifrado cifrado = Cipher.getInstance(DES);
cifrado.init(Cipher.ENCRYPT_MODE, clave);
// Matriz de bytes cifrada
byte[] encryptSourceBytes = cipher.doFinal(sourceBytes);
// codificador Base64
BASE64Encoder base64Encoder = nuevo BASE64Encoder();
devolver base64Encoder.encode(encryptSourceBytes);
} captura (Excepción e) {
// throw también se puede considerar como una ruta de retorno
lanzar nueva RuntimeException(e);
}
}
/**
* Decodificar/descifrar la cadena cifrada por el método encode() de esta clase de herramienta
* @param encrypted La cadena cifrada, es decir, el texto cifrado
* @return cadena de texto sin formato
*/
decodificación de cadena estática pública (cadena cifrada) {
// decodificador Base64
BASE64Decoder base64Decoder = nuevo BASE64Decoder();
intentar {
//Decodificar base64 primero
byte[] cryptedBytes = base64Decoder.decodeBuffer(cifrado);
// modo de descifrado DES
Cifrado cifrado = Cipher.getInstance(DES);
cifrado.init(Cipher.DECRYPT_MODE, clave);
//matriz de bytes decodificada
byte[] decryptStrBytes = cipher.doFinal(cryptedBytes);
// Convierte la matriz de bytes en una cadena usando el formato de codificación dado
devolver nueva cadena (decryptStrBytes, UTF_8);
} captura (Excepción e) {
// Este formulario es realmente adecuado para procesar clases de herramientas.
lanzar nueva RuntimeException(e);
}
}
// prueba unitaria
público estático vacío principal (String [] argumentos) {
//Cadena que debe cifrarse
Correo electrónico de cadena = "[email protected]";
//cifrar
Cadena cifrada = DESUtils.encode (correo electrónico);
// Descifrar
Cadena descifrada = DESUtils.decode (cifrada);
//resultado de salida;
System.out.println("correo electrónico: " + correo electrónico);
System.out.println("cifrado: " + cifrado);
System.out.println("descifrado: " + descifrado);
System.out.println("correo electrónico.equals(descifrado): " + correo electrónico.equals(descifrado));
}
}