【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

posted @   逆火狂飙  阅读(466)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 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]
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示