MD5密码加密详解 MD5是什么,MD5是一个信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。它有着不可逆性,是一种单向加密。由于它是一种老而经典的算法,所以现在可以见别人说什么什么MD5不安全之类的话,其实破解MD5是通过解密人的数据库里存着大量的MD5加密过的密码,用这些密码跟需要破解的密码进行匹配,匹配成功就可以破解,匹配不成功,则进行大量运算直到匹配成功,把成功数据存入数据库里,下次再遇到同样需要破解的MD5加密的密码时,直接可以匹配到。自己个人使用的话可以放心用,如果可以用spring Security的框架就更好,因为它自带加密,有着更高的安全性。
现在贴上MD5加密类:
package com.example.myblog.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* Created by asus on 2020/5/28 19:25
* MD5加密类
*/
public class MD5Utils {
/**
* str 要加密的字符串
*/
public static String code(String str){
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
byte[]byteDigest = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < byteDigest.length; offset++) {
i = byteDigest[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
//32位加密 得到加密后的字符串
return buf.toString();
// 16位的加密
//return buf.toString().substring(8, 24);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
System.out.println(code("xxxx"));
}
}