【代码】
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