獲取對象的Hash值


package com.shzd.common.utils.utils;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5工具類
 */
public class MD5Utils {

	public static String md5(Object obj){

		byte[] dataBytes = getObjBytes(obj);
		//定義一個字節數組
		byte[] secretBytes = null;
		try {
			// 生成一個MD5加密計算摘要
			MessageDigest md = MessageDigest.getInstance("MD5");
			//對字符串進行加密
			md.update(dataBytes);
			//獲得加密后的數據
			secretBytes = md.digest();
		} catch (NoSuchAlgorithmException e) {
			throw new RuntimeException("沒有md5這個算法!");
		}
		//將加密后的數據轉換為16進制數字
		String md5code = new BigInteger(1, secretBytes).toString(16);// 16進制數字
		// 如果生成數字未滿32位,需要前面補0
		for (int i = 0; i < 32 - md5code.length(); i++) {
			md5code = "0" + md5code;
		}
		return md5code;
	}

	private static byte[] getObjBytes(Object obj) {
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		ObjectOutputStream oos = null;
		byte[] dataBytes = null;
		try {
			oos = new ObjectOutputStream(bos);
			oos.writeObject(obj);
			oos.flush();
			dataBytes = bos.toByteArray();
			oos.close();
			bos.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return dataBytes;
	}

	public static void main(String[] args) {
		System.out.println("123="+md5("123"));
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM