먼저 다음 그림에서 MD5 암호화 구현을 이해해 봅시다.
package com.pb; import java.io.unsupportedencodexception; import java.security.messagegegest; import java.security.nosuchalgorithmexception; import java.util.scanner;/******* 2를 초기화* 3. 요약* 4. 바이트 []]는 32 비트 검색*/public class md5 {/** 매개 변수 문자열에 전달 된 md5 생성*/public void generatemd5 (문자열 입력) {try {// 1을 사용하여 32 비트 검색*/public class md5 {/**를 16 진수 문자열로 변환합니다. MessageDigest 정보 요약 객체를 초기화하고 사례 독립적 인 MessageDigest Md = MessageDigest.getInstance ( "MD5")없이 MD5로 지정합니다. // 2. 요약 정보를 업데이트하기 위해 계산할 문자열의 전달은 바이트 배열 바이트 [], // getBytes () 메소드를 사용하여 문자열을 바이트 배열로 변환하는 것입니다. // 3. 정보 요약 Digest () 메소드 계산 // 값은 바이트 배열 바이트 [] hashcode = md.digest (); // 4. 바이트 [] 32 비트 검색으로 16 진수 문자열로 변환 // StringBuffer 개체를 선언하여 마지막 값을 저장하려면 stringbuffer sb = new StringBuffer (); // (바이트 B : HASHCODE)의 바이트 배열을 전송 {// 배열 내용을 16 진수로 변환, sb.Append (arribute.fordigit (b >> 4 & 0xf, 16)); // 32 비트 16 진수 SB.Append로 전송합니다 (문자 .fordigit (b & 0xf, 16)); } system.out.println ( "암호화 후 결과는 다음과 같습니다."+sb.tostring ()); } catch (nosuchalgorithmexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } catch (UnsupportedEncodingException e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} public static void main (String [] args) {// md5 클래스 md5 md5 = new Md5 ()를 암호화하는 객체를 선언합니다. // 스캐너를 사용하여 문자 스캐너를 입력합니다. 스캐너 = 새 스캐너 (System.In); System.out.println ( "암호화 할 내용을 입력하십시오 :"); 문자열 input = scanner.nextline (); // 암호화 메소드 호출 md5.generatemd5 (입력); }} 결과:
암호화 할 내용을 입력하십시오.
MD5의 암호화 공정을 학습 한 후 결과는 다음과 같습니다.
두 번째 코드 :
패키지 테스트 .md5; import java.security.messagegegest; public class md5util {public final static string md5 (문자열 s) {char HexDigits [] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; try {byte [] btinput = s.getBytes (); // md5 다이제스트 알고리즘의 MessageAdigest 객체를 가져옵니다 messageDigest mdinst = messageDigest.getInstance ( "md5"); // 다이제스트 mdinst.update (btinput)를 업데이트합니다. // ciphertext byte [] md = mdinst.digest ()를 가져옵니다. // ciphertext를 육각 문자열로 변환 int j = md.length; char str [] = 새로운 char [j * 2]; int k = 0; for (int i = 0; i <j; i ++) {byte byte0 = md [i]; str [k ++] = hexDigits [byte0 >>> 4 & 0xf]; str [k ++] = hexDigits [byte0 & 0xf]; } 새 문자열 (str)을 반환합니다. } catch (예외 e) {e.printstacktrace (); 널 리턴; }} public static void main (String [] args) {System.out.println (md5util.md5 ( "20121221")); System.out.println (md5util.md5 ( "암호화")); }}세 번째 코드 : MD5 암호화 알고리즘의 Java 구현
기타; import java.security.messagegedigest; import java.security.nosuchalgorithmexception;/** md5 알고리즘*/public class md5 {// global array private final string [] strdigits = { "0", "1", "2", "3", "4", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", "," "a", "b", "c", "d", "e", "f"}; public md5 () {} // 숫자로서 양식을 반환하십시오. // system.out.println ( "iret ="+iret); if (iret <0) {iret += 256; } int id1 = iret / 16; int id2 = iret % 16; return strdigits [id1] + strdigits [id2]; } // return form은 숫자 개인 정적 문자열 바이 테톤 (byte bbyte) {int iret = bbyte; System.out.println ( "iret1 =" + iret); if (iret <0) {iret += 256; } return string.valueof (iret); } // 바이트 배열을 16 진수 문자열로 변환 개인 정적 문자열 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 resulttring = null; try {resultstring = new String (strobj); MessageDigest MD = MessageDigest.getInstance ( "MD5"); // md.digest ()이 함수의 반환 값은 해시 resultstring = bytoString을 저장하는 바이트 배열입니다 (md.digest (strobj.getBytes ())); } catch (nosuchalgorithmexception ex) {ex.printstacktrace (); } return resultString; } public static void main (String [] args) {md5 getmd5 = new Md5 (); System.out.println (getmd5.getmd5code ( "000000")); }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.