Cifrado de algoritmo de cifrado Java y hash hash con código fuente del algoritmo de cifrado de clave secreta
Recientemente aprendí el conocimiento de los algoritmos de cifrado y usé el cifrado MD5. Baidu tiene mucha información en línea, pero no es muy detallada. Aquí resolveré cómo implementar el algoritmo de cifrado con cifrado MD5 y hash hash con claves secretas. Puedes echar un vistazo.
Código de implementación:
paquete com.ompa.common.utils; import java.security.messageGest; import java.security.nosuchalgorithmexception; import javax.crypto.mac; import javax.crypto.secretkey; import javax.crypto.spec.secreteysp;/*** use zhangcd* @date 2016-4-29*/public class encryptutil {private static final string mac_name = "hmacsha1"; Codificación de cadena final estática privada = "UTF-8"; Key de cadena final estática privada = "ILoveYou";/ ****MD5 agrega código para generar 32 bits Code*/ public static String String2Md5 (String Instr) {MessageGest md5 = null; intente {md5 = MessageDigest.getInstance ("MD5"); } catch (Exception e) {System.out.println (e.ToString ()); E.PrintStackTrace (); devolver ""; } char [] chararray = instr.toCarArray (); byte [] byteArray = new Byte [CharArray.Length]; para (int i = 0; i <chararray.length; i ++) bytearray [i] = (byte) chararray [i]; byte [] md5bytes = md5.digest (bytearray); StringBuffer hexValue = new StringBuffer (); for (int i = 0; i <md5bytes.length; i ++) {int val = ((int) md5bytes [i]) & 0xff; if (val <16) hexValue.append ("0"); hexValue.append (integer.tohexstring (val)); } return hexValue.ToString (); } / ****El cifrado MD5 genera código MD5 de 32 bits* / public static String StringMd5 (String Instr) {return String2Md5 (String2Md5 (Instr)); }/ *** Algoritmo de cifrado y descifrado*/ public static String ConvertMd5 (String Instr) {char [] a = instr.toCarArray (); for (int i = 0; i <a.length; i ++) {a [i] = (char) (a [i] ^ 't'); } Cadena S = nueva cadena (a); regreso s; } / ** * HMAC-SHA1 * @param encrypttext * @param encryptkey * @return * @throws excepción * / public static string hmacSha1Encrypt (string cifrTtext, string encryptkey) lanza la excepción {byte [] data = ciRyptkey.getBytes (encodering); SecretKey SecretKey = new SecretKeSpec (Data, Mac_Name); Mac Mac = Mac.getInstance (Mac_Name); Mac.init (SecretKey); byte [] text = encryptText.getBytes (codificación); byte [] str = mac.dofinal (text); // crea hex stringstringbuffer hexString = new StringBuffer (); // Convertir la matriz de byte a un número Hexadecimal para (int i = 0; i <str.length; i ++) {string shahex = integer.tohexString (str [i] & 0xff); if (if (shahex.lengthment () <2) {hexString.append (0);} hexString.append (shahex);} return hexString.ToString ();} public static String conververtSha1 (String instr) {try {return hmacSha1encrypt (Instr, key);} Catch (excepción e) {////////1 AutO-Generated Cattle-Generated Tatch TathA1ChAnpt (Instr, Instr, Key);} Catch (excepción E) {///////1 AutO-Generated Catch tratada a HMACSHA1ENTPPT (Instr, Instr, Key);} Catch (excepción E) {///////1 AutO-Generated Catch Tatch Catch TackeTatated Catch Catch Tatch blocke.printStackTrace (); return "";}} // prueba la función principal pública static void main (string args []) lanza excepción {// hash hash con string de cifrado de clave secreta tt = convertsha1 ("123456"); system.println (tt); // md5 cifrado cadena s = nueva cadena ("123456); System.out.println ("Origin:" + S); System.out.println ("después de MD5:" + String2Md5 (s)); System.out.println ("Después de MD5:" + StringMd5 (s));}}Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!