Primero, comprendamos la implementación de cifrado MD5 de la siguiente figura, de la siguiente manera
package com.pb;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Scanner;/* * Verify MD5 * 1. Initialize the MessageDigest information summary object* 2. Pass in the string to be calculated to update the summary information* 3. Calculate El resumen de la información* 4. Convertir byte [] a una cadena hexadecimal con una búsqueda de 32 bits*/public class MD5 {/** Genere MD5 con String de parámetro*/public void Generatemd5 (String Input) {try {// 1. Inicialice el objeto de resumen de información de MessageDigest y especifíquelo como MD5 sin MessageGest independiente de la caja MD = MessageDigest.GetInstance ("MD5"); // 2. Pase en la cadena para calcularse para actualizar la información de resumen, la aprobada es el byte de la matriz de byte [], // Convirtir la cadena en matriz de bytes usando el método getBytes () // Cuando se especifica, su codificación de caracteres es UTF-8 md.update (input.getByTes ("UTF-8")); // 3. Calcule el método de resumen de información Digest () // devolver el valor es el byte de la matriz de bytes [] hashcode = md.digest (); // 4. Convertir byte [] Convierta a una cadena hexadecimal con una búsqueda de 32 bits // declarar un objeto StringBuffer para almacenar el último valor StringBuffer sb = new StringBuffer (); // Transferir la matriz de bytes para (byte b: hashcode) {// convertir el contenido de la matriz en hexadecimal, sb.append (caracteres.fordigit (b >> 4 y 0xf, 16)); // transferir al hexadecimal sb.append de 32 bits (caracteres.fordigit (b & 0xf, 16)); } System.out.println ("El resultado después del cifrado es:"+sb.ToString ()); } Catch (nosuchalgorithMexception e) {// TODO BLOQUE DE CABTA AUTO GENERADA E.PRINTSTACKTRACE (); } Catch (UnsupportedEnCodingException e) {// TODO Auto Generado Bloque E.PrintStackTrace (); }} public static void main (string [] args) {// declara el objeto que encripta la clase md5 md5 md5 = new md5 (); // use el escáner para ingresar un escáner de caracteres Scanner = New Scanner (System.in); System.out.println ("Ingrese el contenido para estar encriptado:"); String input = scanner.nextline (); // llamando al método de cifrado MD5.Generalemd5 (entrada); }} resultado:
Ingrese el contenido para estar encriptado:
El resultado después de aprender el proceso de cifrado de MD5 es: B826CDAC46F01DCC8CCC60A76CEBF858
Segundo código:
paquete test.md5; import java.security.messageGest; public class md5util {public final static string md5 (string s) {char hexdigits [] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; intente {byte [] btinput = s.getBytes (); // Obtenga el objeto MessageDigest del algoritmo Digest MD5 MessageGest Mdinst = MessageDigest.getInstance ("MD5"); // actualizar el digest mdinst.update (btinput); // Obtener el byte de texto cifrado [] md = mdinst.digest (); // Convierta el texto cifrado en un formulario de cadena HEX int j = md.length; char str [] = nuevo char [j * 2]; int k = 0; para (int i = 0; i <j; i ++) {byte byte0 = md [i]; str [k ++] = hexdigits [byte0 >>> 4 & 0xf]; str [k ++] = hexdigits [byte0 & 0xf]; } return new String (Str); } catch (Exception e) {E.PrintStackTrace (); regresar nulo; }} public static void main (string [] args) {System.out.println (md5util.md5 ("20121221")); System.out.println (md5util.md5 ("cifrado")); }}La tercera pieza de código: Java Implementación del algoritmo de cifrado MD5
package other;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/* * MD5 algorithm*/public class MD5 { // global array private final static String[] strDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; public md5 () {} // return Form como número y cadena static static string bytetoArrayString (byte bbyte) {int iret = bbyte; // system.out.println ("iret ="+iret); if (iret <0) {iret += 256; } int id1 = iret / 16; int id2 = iret % 16; return strdigits [id1] + strdigits [id2]; } // El formulario de retorno es solo una cadena estática privada de dígito bytetonum (byte bbyte) {int iret = bbyte; System.out.println ("iret1 =" + iret); if (iret <0) {iret += 256; } return string.ValueOf (iret); } // Convierta la matriz de byte en una cadena hexadecimal de cadena estática privada bytetostring (byte [] bbyte) {stringBuffer sbuffer = new StringBuffer (); for (int i = 0; i <bbyte.length; i ++) {sbuffer.append (bytetoarraystring (bbyte [i])); } return sbuffer.ToString (); } public static String getMd5code (String StroBj) {String ResultString = null; intente {resultados treTring = new String (stroBJ); MessageDigest MD = MessageGest.getInstance ("MD5"); // md.digest () El valor de retorno de esta función es la matriz de bytes que almacena el hash resultados thetetostring (md.digest (strobj.getbytes ())); } catch (nosuchalgorithMexception ex) {ex.printstackTrace (); } return resultados ttring; } public static void main (string [] args) {md5 getMd5 = new Md5 (); System.out.println (getMd5.getMd5Code ("000000")); }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.