md5加盐加密
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | 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" )); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!