JDK信息摘要

#JDK信息摘要

信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。

##MessageDigest类

MessageDigest 类提供信息摘要算法的功能,他是抽象类,需要MessageDigest.getInstance才能拿到MessageDigest的对象。以MD5为例下面是我碰到的问题以及解决方式

##注意点1.拿到对象

他是抽象类,需要 MessageDigest.getInstance 才能拿到MessageDigest的对象。

##注意点2.digest()的注意点

digest 方法只能被调用一次。在调用 digest 之后,MessageDigest 对象被重新设置成其初始状态。

##注意点3.进制转换问题

我们看到的加密后的摘要是十六进制的,而类返回给我们的是byte数组,我们需要byte[]转换成十六进制字符串。具体方法是:用HexBinaryAdapter类,他有一个marshal(byte[] bytes)方法,他可以将byte[]转换为String。

##MD5和sha的代码:

import java.security.MessageDigest;

import javax.xml.bind.annotation.adapters.HexBinaryAdapter;

public class JDK_MD5 {

	public static String massage = "text";

	public static void jdkMD5() throws Exception {		//jdkMD5摘要
		MessageDigest md = MessageDigest.getInstance("MD5");// 拿到提供信息摘要算法的类的对象
		byte[] md5Digest = md.digest(massage.getBytes());// 得到MD5摘要
		// digest 方法只能被调用一次。在调用 digest 之后,MessageDigest 对象被重新设置成其初始状态。
		HexBinaryAdapter tool = new HexBinaryAdapter();
		String result = tool.marshal(md5Digest);
		System.out.println(result);
	}
	
	public static void jdksha() throws Exception {		//jdksha摘要
		MessageDigest md = MessageDigest.getInstance("sha");// 拿到提供信息摘要算法的类的对象
		byte[] md5Digest = md.digest(massage.getBytes());// 得到MD5摘要
		// digest 方法只能被调用一次。在调用 digest 之后,MessageDigest 对象被重新设置成其初始状态。
		HexBinaryAdapter tool = new HexBinaryAdapter();
		String result = tool.marshal(md5Digest);
		System.out.println(result);
	}

	public static void main(String[] args) throws Exception {
		jdkMD5();
		jdksha();
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值