zoukankan      html  css  js  c++  java
  • 获取对象的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"));
    	}
    }
    
  • 相关阅读:
    状压dp学习笔记
    dbcc log(转)
    日志分析 操作(转)
    Sql server 2005系统表详细说明
    c#读取并分析sqlServer据库日志(转)
    [POJ]1915 Knight Moves
    [JOY]1143 飘飘乎居士的约会
    [POJ]1164 The Castle
    win7注册ocx时出现对DllRegisterServer的调用失败,错误代码为0x80040200解决方案
    注册DLL、OCX的方法
  • 原文地址:https://www.cnblogs.com/mengjianzhou/p/11578666.html
Copyright © 2011-2022 走看看