【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 @ 2022-03-18 10:55  逆火狂飙  阅读(484)  评论(0)    收藏  举报