密码学基础之消息摘要函数

什么是消息摘要函数

在很多软件的下载页面的,旁边都会有md5、sha1之类的链接,这个是干什么用的呢?


密码学基础之消息摘要函数_第1张图片
MongoDB下载页

我们点开md5看一下:

a35f264d18e8b2907a5c7cda339e2ca4  mongodb-osx-ssl-x86_64-debugsymbols-v3.4-latest.tgz

左边的16进制字符串是后面文件的MD5消息摘要值。

这个值的作用是用来防止下载出现错误,或者文件被篡改。

在下载mongodb-osx-ssl-x86_64-debugsymbols-v3.4-latest.tgz完成后

我在终端用下面命令计算下文件的MD5值

$ md5 mongodb-osx-ssl-x86_64-debugsymbols-v3.4-latest.tgz
MD5 (/Users/yang/mongodb-osx-ssl-x86_64-debugsymbols-v3.4-latest.tgz) = a35f264d18e8b2907a5c7cda339e2ca4

看到我们计算出的MD5值和网站上的相同,表明这个文件被正确下载了。

MD5值就是根据文件或消息生成一个128位二进制值,用十六进制表示,就是32位16进制字符串。文件有一个字节的改动,算出的MD5就会变化。想找到两组不同的消息对应相同的MD5是非常困难的。

后面的sha1和sha512生成的消息摘要值更长,如下表所示:

消息摘要算法 输入长度 摘要长度
MD5 无限制 128位
SHA-1 无限制 160位
SHA-224 无限制 224位
SHA-256 无限制 256位
SHA-384 无限制 384位
SHA-512 无限制 512位
SHA3-224 无限制 224位
SHA3-256 无限制 256位
SHA3-384 无限制 384位
SHA3-512 无限制 512位

SHA-224,SHA-256,SHA-384和SHA-512统称SHA-2;
SHA3-224,SHA3-256,SHA3-384,SHA3-512统称SHA-3。

消息摘要函数的用途

1. 文件校验、防止文件或信息被篡改

前文说过,想找到两组不同的消息对应相同的MD5是非常困难的,其它摘要长度长度的算法则更加安全。

2. 用于数字签名

数字签名的本质是要使用不对称秘钥算法,用于处理太长的消息是不现实的,一般采用先进行消息摘要,再进行数字签名。

消息摘要算法的安全性

MD5和SHA-1已经没那么安全,用于安全用途最好使用SHA-2算法或者SHA-3算法。

消息摘要的其它名称

消息摘要(Message Digest)又有数字摘要(Digital Digest)、单向散列、哈希函数等名称。

相关文章

C语言实现SHA256算法
密码学基础系列

你可能感兴趣的:(密码学基础之消息摘要函数)