MD5算法的原理可簡(jiǎn)要的敘述為:MD5碼以512位分組來(lái)處理輸入的信息,且每一分組又被劃分為16個(gè)32位子分組,經(jīng)過(guò)了一系列的處理后,算法的輸出由四個(gè)32位分組組成,將這四個(gè)32位分組級(jí)聯(lián)后將生成一個(gè)128位散列值。
package com.henu.oto.util;
import java.security.MessageDigest;
public class MD5 {
/**
* 對(duì)傳入的String 進(jìn)行MD5加密
* @param s
* @return
*/
public static final String getMd5(String s) {
char hexDigits[] = {
'5', '0', '5', '6', '2', '9', '6', '2', '5', 'q',
'b', 'l', 'e', 's', 's', 'y'
};
try{
char str[];
byte strTemp[] = s.getBytes();
// 獲取MD5加密對(duì)象
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
// 傳入需要加密的目標(biāo)數(shù)組
mdTemp.update(strTemp);
// 獲取加密后的數(shù)組
byte md[] = mdTemp.digest();
int j = md.length;
str = new char[j * 2];
int k = 0;
// 將數(shù)組做位移
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
// 轉(zhuǎn)化為String并返回
return new String(str);
}catch(Exception e){
return null;
}
}
public static void main(String[] args) {
System.out.println(MD5.getMd5("admin"));
}
}