消息摘要

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

猜你喜欢

转载自xuanzhui.iteye.com/blog/2359105