md5加密

package com。gyj.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Random;

public class Md5Utils {
	
	
	//參數1:輸入明文密碼
	public static String  getMd5Code(String password){
		StringBuilder sb = null;
		try {
			//創建加密對象
			//參數1: 算法名字
			MessageDigest messageDigest = MessageDigest.getInstance("MD5");
			//進行加密  返回加密之後結果也是字節
			byte[] digest = messageDigest.digest(password.getBytes());
			sb = new StringBuilder();
			for (byte b : digest) {
				//位運算
				int len = b & 0xff;    //0  0x0 0x1 0x2 0x3 0x4 0x9  10  0xa   15  0xf  16 0x10 170x11
				if(len<=15){
					sb.append("0");
				}
				sb.append(Integer.toHexString(len));
			}
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return sb.toString();
	}
	
	
	//生成隨機的鹽
	public static  String  getSalt(int n){
		char[] code =  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".toCharArray();
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < n; i++) {
			sb.append(code[new Random().nextInt(code.length)]);
		}
		return sb.toString();
	}
	
	
	
	public static void main(String[] args) throws NoSuchAlgorithmException {
		
		String salt = getSalt(8);
		System.out.println(salt);
		String md5Code = getMd5Code("123456789E4"+salt);//52c69e3a57331081823331c4e69d3f2e
		System.out.println(md5Code);
		
		
		//Md5 spring 框架
		//String md5DigestAsHex = DigestUtils.md5DigestAsHex("111111".getBytes());
		//System.out.println(md5DigestAsHex);
		// 111111    96e79218965eb72c92a549dd5a330112
		
		
	}
	
}

鹽可以加在任意位置,記好就行!加密後基本不可逆轉,因此判斷加密前後的相同,可以對要判斷的內容進行加密後再與已存在的相比。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章