MD5工具类
经常用到的MD5加密工具类,固定长度32位、简单、快速。MD5基于Hash算法,不可逆。
实际运用MD5,为安全起见,建议使用加密因子配合加密,后再一次MD5。
用自带的MessageDigest实现md5加密算法:
文件:MD5.java
package com.util;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5 {
public static String md5(String input) {
try {
String result = input;
if (input != null) {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(input.getBytes("UTF-8"));
BigInteger hash = new BigInteger(1, md.digest());
result = hash.toString(16);
while (result.length() < 32) {
result = "0" + result;
}
}
return result;
} catch(Exception e) {
e.printStackTrace();
}
return null;
}
}使用spring包类DigestUtils方式
package com.util;
import org.springframework.util.DigestUtils;
public class MD5 {
public static String md5(String input) {
try {
return DigestUtils.md5DigestAsHex(input.getBytes("UTF-8"));
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}使用commons-codec包类DigestUtils方式
package com.util;
import org.apache.commons.codec.digest.DigestUtils;
public class MD5 {
public static String md5(String input) {
try {
return DigestUtils.md5Hex(input.getBytes("UTF-8"));
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}测试用例:
public static void main(String[] ass){
String password = "123456";//密码
String salt = "E23D*&";//加密因子
//直接加密,容易被识别破解
System.out.println(md5(password));
//输出:e10adc3949ba59abbe56e057f20f883e
//因子加密,不容易识别破解
System.out.println(md5(salt + password));
//输出:70b14b8082da11ae8b0d742166a41902
//双重加密,已经刀枪不入了
System.out.println(md5(md5(salt + password)));
//输出:af7ea3d56063d3f0432d84890c954fbd
}原创文章,转载请注明出处:https://www.weizhixi.com/article/4.html
