Muchas veces, se requiere cifrado persistente para el cifrado secreto, y el cifrado en este momento usa MD5. Cuando se usa el cifrado simétrico, se utiliza el método DES
importar java.io.ioException; ; "; private final estática final cadena md =" md "; private final static string key =" opeddsaeaddadbcabf "; / ** * md Algoritmo de cifrado * @param data * @return * / public st atic string mdencrypt (datos de cadena) { String ResultString = NULL; Resultstring; xff) <x) {bf.append ("t"); al valor de la tecla * @param data * @param clave de cifrado de cifrado matriz de byte * @return * @throws excepción */ public static string desencrypt (datos de cadena, tecla de cadena) lanza la excepción {if (key == null) {key = key = key; } byte [] bt = cifrado (data.getBytes (), key.getBytes ()); param data * @param clave de cifrado clave de byte matriz * @return * @throws ioexception * @throws excepción */ public static string desDecrypt (string data, clave de cadena) lanza el episodio IOEXC, excepción {if (data == null) {return null ; ); ] d ata, byte [] llave) arroja una excepción {// Generar una fuente de número aleatorio de confianza Secureandom Sr = new SecureDom (); Cree una fábrica de clave, luego use para convertir DeskeySpec en el objeto SecretKey SecretFactory KeyFactory = SecretKeyFactory.getInstance (DES); CiPher.getInstance (DES); Param Data * @param clave de cifrado Clave matriz de byte * @return * @throws excepción */ private static byte [] decrypt (byte [] data, byte [] key) lanza la excepción {// Generar una fuente de número aleatorio confiable Securerandom sr = nuevo sec urerandom (); Des); );A continuación introduciré una pieza de código para implementar clases de cifrado y descifrado de MD5 en Java
Java implementa clases de cifrado y descifrado MD5, con clases de prueba, consulte el código para más detalles.
Clase de cifrado y descifrado MD5 - MyMD5UTIL, el código es el siguiente:
paquete com.zyg.security.md5; Cadena final estática HEX_NUMS_STR = "0123456789ABCDEF"; = (Hex.length () / 2); pos = i * 2; Convierta la matriz de byte especificada en una cadena hexadecida * @param b * @return */ public static string bytetoHexString (byte [] b) {stringbuffer hexString = new StringBuffer (); i ++) {string hex = integer.toHexString (b [i] & 0xff); :::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::: no); * @param PasswordIndb * @return * @throws nosuchalgorithMexxception * @lanza UnsupportedEncodingException */public static Boolean ValidPassword (String Password, String PasswordIndb) arroja nosuchalgorithMexxception, unsupportedEndingingExexception {// convertir la cadena de hemo en una contraseña de format en un byte byte byte [] pwdindb = HexStringTobyte (contraseña Indb); ); /Crear el Mensaje Digest Object MessageGest MD = MessageGest.getInstance ("MD5"); :::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::: : Los datos de Salt se pasan al objeto de digestión de mensajes md.update (sal); de la contraseña de entrada byte [] digest = md.digest (); Digest de mensajes de la contraseña en el sistema de la base de datos. Arrays.equals (digest, digestIndb)) {// La contraseña devuelve correctamente el mensaje de coincidencia de contraseña devolver verdadero; Hexadecimal Password * @Param Password * @return * @throws nosuchalgorithm excepción * @throws unsupportedenCodingException * /public static string getencryptpwd (contraseña de cadena) lanza nosuchalgorithMexception, unsupportedEncodeNingException {// Declare la contraseña encriptada variable por la variable de la contraseña; Número aleatorio Generador SecurerAndom Random = New SecureDom (); objeto MessageGest MD = NULL; objeto md.update (contraseña.getBytes ("utf-8")); Contraseña, agregue la longitud del byte de la sal pwd = nuevo byte [digest.length + salt_length]; , 0, pwd, 0, sal_length); Formato de matriz de byte con contraseña a contraseña bytetohexstring (pwd);Clase de prueba: cliente, el código es el siguiente:
paquete com.zyg.security.md5; ; ); ou t. / TODO BLOCK AUTO GENERADO E.PRINTSTACKTRACE (); Prueba {CienceedPwd = MyMD5UTIL. / TODO BLOQUE DE CABTA GENERADA AUTO nombre de usuario, contraseña de cadena) lanza NosuchalgorithMexxception, UnsupportedEncodingException {string pwdindb = (string) usser.get (username); System.out.println ("¡No existe este usuario! ! ! "); return false;}}}