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"));
    	}
    }
    
  • 相关阅读:
    第5章 简单的C程序设计——循环结构程序设计
    第4章 简单的C程序设计——选择结构程序设计
    通过wget工具下载指定文件中的URLs对应的资源并保存到指定的本地目录中去并进行文件完整性与可靠性校验
    Kaflka介绍
    分布式与集群
    Golang菜鸟教程day01
    优秀的github项目
    Golang教程
    windows下安装GDB
    nginx部署
  • 原文地址:https://www.cnblogs.com/mengjianzhou/p/11578666.html
Copyright © 2011-2022 走看看