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