package com.pb;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import jav...
package com.pb; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Scanner; /* * 驗證MD5 * 1.初始化MessageDigest信息摘要對象 * 2.傳入需要計算的字元串更新摘要信息 * 3.計算信息摘要 * 4.將byte[] 轉換為找度為32位的16進位字元串 */ public class MD5 { /* * 生成md5 有傳入參數字元串 */ public void generateMD5(String input){ try { //1.初始化MessageDigest信息摘要對象,並指定為MD5不分大小寫都可以 MessageDigest md=MessageDigest.getInstance("md5"); //2.傳入需要計算的字元串更新摘要信息,傳入的為位元組數組byte[], //將字元串轉換為位元組數組使用getBytes()方法完成 //指定時其字元編碼 為utf-8 md.update(input.getBytes("utf-8")); //3.計算信息摘要digest()方法 //返回值為位元組數組 byte [] hashCode=md.digest(); //4.將byte[] 轉換為找度為32位的16進位字元串 //聲明StringBuffer對象來存放最後的值 StringBuffer sb=new StringBuffer(); //遍歷位元組數組 for(byte b:hashCode){ //對數組內容轉化為16進位, sb.append(Character.forDigit(b>>4&0xf, 16)); //換2次為32位的16進位 sb.append(Character.forDigit(b&0xf, 16)); } System.out.println("加密後的結果是:"+sb.toString()); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { //聲明加密MD5類的對象 MD5 md5=new MD5(); //使用Scanner來輸入一個字元 Scanner scanner=new Scanner(System.in); System.out.println("請輸入要加密的內容:"); String input = scanner.nextLine(); //調用加密方法 md5.generateMD5(input); } }
請輸入要加密的內容: 學習MD5加密過程 加密後的結果是:b826cdac46f01dcc8ccc60a76cebf858