`
xuanzhui
  • 浏览: 197414 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

消息摘要

阅读更多

常用的消息摘要包含 MD5,SHA1,SHA256,区别可见 wiki -- SHA家族

消息摘要的算法输出字节长度是确定的:

MD5 --> 128 bits

SHA1 --> 160 bits

SHA256 --> 256 bits

 

Java 中有 MessageDigest 类专门用来处理这样的需求,一般流程:

getInstance  -->  update  -->  digest

MessageDigest messageDigest = MessageDigest.getInstance("MD5"); // or SHA-1, SHA-256
messageDigest.update(plainText.getBytes(StandardCharsets.UTF_8));
byte[] hashBytes = messageDigest.digest();

 

 

python3 对应的是 hashlib 库,一般流程

hashlib.算法名()  -->   update  -->  digest

由于一般都是直接看16进制字符串,可以简写为

hashlib.md5(plainText.encode('utf-8')).hexdigest()

 

摘要算法主要用来确保数据的完整性[Integrity] 本身不具备身份验证[Authentication]的功能,即在不添加其他要素的情况无法确定发送信息的人是可信任的,所以要达到身份验证的功能,一般要给发送方分配一个秘钥,双方约定按照某种方式先把秘钥或其他要素添加到原始信息中,再执行摘要算法。

 

 

sample

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics