欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

消息摘要

程序员文章站 2022-06-16 15:13:26
...

常用的消息摘要包含 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