前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MD5压缩算法

MD5压缩算法

作者头像
小小明童鞋
发布2018-06-13 16:11:27
2.4K3
发布2018-06-13 16:11:27
举报
package cn.com.test;
/* 传入参数: 一个字节数组
 * 传出参数: 字节数组的MD5结果字符集
 */
public class MD5 {

	public static String getMD5 (byte[] source){
		String s = null;
		//用来将字节转换成十六进制表示的字符
		char hexDigits[] = {'0' ,'1', '2', '3', '4' ,'5' ,'6', '7','8','9','a','b','c','d','e','f'};
		
		try {
			java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
			md.update(source);
			//MD5 的计算结果是一个128位的长整数,用字节表示就是16个字节
			byte tmp[] = md.digest();
			//每个字节用十六进制表示的话,使用两个字符,所以表示成十六进制需要32个字符
			char str[] = new char[16*2];
			//表示转换结果中对应的字符位置
			int k = 0;
			for (int i= 0;i< 16;i++){
				//从第一个字节开始,将MD5的每一个字节转换成十六进制字符
				//取第i个字节
				byte byte0 = tmp[i];
				// 取字节中高4位的数字转换,>>> 为逻辑右移,将符号位一起右移
				str[k++] = hexDigits[byte0 >>> 4 & 0xf];
				//去字节中低4位的数字转换
				str[k++] = hexDigits[byte0 & 0xf];				
			}
			s = new String(str);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return s;
	}
	public static void main(String[] args) {
		byte byarr[] = {'1','2','3','!','@','#'};
		System.out.println(MD5.getMD5(byarr));
	}
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档