MD5的全稱是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest開發出來,經MD2、MD3和MD4發展而來。
MD5 算法底層原理,簡單概括起來,MD5 算法的過程分爲四步:處理原文,設置初始值,循環處理分組數據,拼接結果。
這裏我們用Java自帶的MessageDigest工具類實現:
/**
* 獲得Md5加密
*
* @param str 原字符串
* @return 加密後的字符串
*/
public static String strToMd5(String str) {
String md5Str = null;
if (str != null && str.length() != 0) {
try {
//獲取md5對象
MessageDigest md = MessageDigest.getInstance("MD5");
//將字符串轉換爲字節數組
md.update(str.getBytes());
//信息摘要對象對字節數組進行摘要,得到摘要字節數組
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
//把摘要數組的每一個字節轉換成16進制
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0) {
i += 256;
}
if (i < 16) {
buf.append("0");
}
//將字節數組轉換爲16進制字符串
buf.append(Integer.toHexString(i));
}
//32位
md5Str = buf.toString();
//16位
//md5Str = buf.toString().substring(8, 24);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
return md5Str;
}
詳細學習參考:https://blog.csdn.net/JunhuiXie/article/details/100630841