package org.security; import org.apache.commons.codec.digest.DigestUtils; import java.util.UUID; /** * @author 50649 */ public class SecurityUtil { /** * 加盐加密 * * @param password * @return */ public static String encrypt(String password) { // 每次生成内容不同的,但长度固定 32 位的盐值 String salt = UUID.randomUUID().toString().replace("-", ""); // 最终密码=md5(盐值+原始密码) String finalPassword = DigestUtils.md5Hex((salt + password).getBytes()); return salt + finalPassword; } /** * 密码验证 * * @param password 待验证密码 * @param finalPassword 最终正确的密码(数据库中加盐的密码) * @return */ public static boolean decrypt(String password, String finalPassword) { // 非空效验 if (null == password || null == finalPassword) { return false; } if (finalPassword.length() != 64) { // 最终密码不正确 return false; } // 盐值 String salt = finalPassword.substring(0, 32); // 使用盐值+待确认的密码生成一个最终密码 String securityPassword = DigestUtils.md5Hex((salt + password).getBytes()); System.out.println("securityPassword=="+securityPassword); // 使用盐值+最终的密码和数据库的真实密码进行对比 return (salt + securityPassword).equals(finalPassword); } public static void main(String[] args) { String password = "123"; // System.out.println(SecurityUtil.encrypt(password)); // 4d94e438ab74495a8bb2fea0bf96887d9222409880242be59dbda7265d64418b // System.out.println(SecurityUtil.encrypt(password)); // 942890192ad04369a1667b2b0308a2640d052e9b17d422ec8e7925e81af95470 // System.out.println(SecurityUtil.encrypt(password)); // b8fdcdbc855a41afa7d0135304bd826e025f7d140c66342f69833578d2d64776 System.out.println(SecurityUtil.decrypt(password, "4d94e438ab74495a8bb2fea0bf96887d9222409880242be59dbda7265d64418b")); System.out.println(SecurityUtil.decrypt(password, "942890192ad04369a1667b2b0308a2640d052e9b17d422ec8e7925e81af95470")); System.out.println(SecurityUtil.decrypt(password, "b8fdcdbc855a41afa7d0135304bd826e025f7d140c66342f69833578d2d64776")); } }
标签:加密,String,System,密码,加盐,finalPassword,password,out,md5 From: https://www.cnblogs.com/xianz666/p/18499434