【Java加解密】MD5摘要加盐处理
【代码】
package com.hy.lab; import java.security.MessageDigest; import java.text.SimpleDateFormat; import java.util.Base64; import java.util.Date; import java.util.Random; /** * Md5摘要算法,单向不可逆 * 截取部分以保持原长 */ public class Md5 { public static String encrypt(String original){ try { int fixSize=original.length()-1; long uid=System.currentTimeMillis(); original=addSalt(uid,original); // MD5,SHA,SHA-256,SHA-384,SHA-512 final String ALGORITHM="MD5"; MessageDigest md= MessageDigest.getInstance(ALGORITHM); byte[] digests=md.digest(original.getBytes()); String digestTxt= Base64.getEncoder().encodeToString(digests); digestTxt=digestTxt.substring(0,fixSize); return digestTxt; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return "Error"; } } private static String addSalt(long uid,String originalName) { SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss"); StringBuilder sb=new StringBuilder(); sb.append(sdf.format(new Date())); Random rnd=new Random(); sb.append(rnd.nextInt(100)); sb.append(uid); sb.append("_"+originalName); return sb.toString(); } public static void main(String[] args){ String[] arr={"MD5543543543","摘要4234324324算法","432432432加盐"}; for(String str:arr){ String enStr=Md5.encrypt(str); String msg=String.format("原文=%s 加盐后摘要文=%s",str,enStr); System.out.println(msg); } } }
【输出】
原文=MD5543543543 加盐后摘要文=7hMOqn+/SUg 原文=摘要4234324324算法 加盐后摘要文=jSMj49DGGyTg1 原文=432432432加盐 加盐后摘要文=Nf4eLwaWq7
END
分类:
Java.加密解密
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2020-03-18 [bash]调用linux命令获得结果存入变量的两种方式
2020-03-18 Oracle中树形查询使用方法
2020-03-18 使用grep命令查找文件中符合”.stg.“行
2020-03-18 [bash] 获取linux主机名,检视内中是否有特定字符串
2019-03-18 【高中数学/偶函数/指数函数】求y=-x^2+(e^x-e^-x)*sinX 的函数图像 x∈[-2.8,2.8]