消息摘要

2017-10-31  本文已影响0人  火烛明

概述:
消息摘要:唯一对应一个消息或文本的固定长度的值,是一个单向由Hash加密函数对消息作用而产生的。
分类:
1.MD(Message Digest)算法的编程使用
2.SHA算法的编程使用
3.HMAC算法的编程使用

作用: 验证消息的完整性防止在运输途中被串改。

QQ20171031-093328@2x.png

一.MD算法的编程使用

1.初始化
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
2.更新
messageDigest.update(byte[] b);
3.生成摘要
byte[] result = messageDigest.digest();
4.字节数组转16进制字符串

二.SHA算法的编程使用
1.初始化
// SHA-256 , SHA-386,SHA-512
MessageDigest messageDigest = MessageDigest.getInstance("SHA");

2.更新
messageDigest.update(byte[] b);
3.生成摘要
byte[] result = messageDigest.digest();
4.字节数组转16进制字符串

三.HMAC算法的编程使用
MD算法和SHA算法缺点容易被篡改所以就有了HMAC
HMAC融合了MD 和SHA加入了秘钥的支持

QQ20171031-160958@2x.png

1.生成秘钥
1.1 初始化
KeyGenerator keyGen = KeyGenerator.getInstance("HmacMD5");
1.2 生产秘钥
SecretKey secretKey = keyGen.generateKey();
1.3 得到秘钥的字节数组
byte[] key = secretKey.getEncoded();

2.执行摘要
2.1 从字节数组还原秘钥
SecretKey secretKey = new SecretKeySpec(key, "HmacMD5");
2.2 实例化Mac
Mac mac = Mac.getInstance("HmacMD5");
2.3 用秘钥初始化Mac
mac.init(secretKey);
2.4 执行消息摘要
byte[] result = mac.doFinal(data);

上一篇下一篇

猜你喜欢

热点阅读