简述
我们经常在网上下载一些软件,怎么能验证下载到的文件和官方提供的文件是否一致?就引入了数据完整性验证的问题。
利用散列函数的特性,比如单向性,常用于验证数据的完整性。主要包含MD、SHA、MAC 共三大系列。
MD算法家族
MD5算法是典型的消息摘要算法,由MD2、MD3、MD4算法改进而来的。
MD系列算法,对数据生成一个128位的二进制信息摘要,转换为十六进制,可得到一个32位的十六进制字符串。
$ echo "hello md5" | md5
94988405d319a361bd6424b82ab6740d虽然MD5算法的漏洞越来越多,已不再安全,但也没有MD6算法的出现,而是基于MD4算法改进的SHA算法可能将是MD系列算法的主要替换者。
2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证。推荐使用SHA-2系列算法。
SHA算法家族
SHA算法是基于MD4基础之上,作为MD算法的继任者,成为了新一代消息摘要算法的代表。SHA与MD算法的不同之处主要在于摘要的长度,SHA算法的摘要长度更长,安全性更高。
包含SHA-1 SHA-224 SHA-256 SHA-384 SHA-512 (后4中,成为SHA-2系列)
但随着时间的推移,MD5、SHA-1都已经被破解. 目前SHA-2还未被破解
$ echo "hello sha-1" | shasum -a 1
8a3f6579a8b81799130d14fb7355e730dbb723cd -
$ echo "hello sha-224" | shasum -a 224
5989b1e7ab12c5453e460c118439ef7ccddd55be4ce83d47c94abd42 -
$ echo "hello sha-256" | shasum -a 256
f1be587c28efc8b25ab42dbb287f211f7294369cc1644cd8a9066845f24b8936 -
$ echo "hello sha-384" | shasum -a 384
af7d06face2be735ada9ef9b30fec1596646676d764ba9ff28e78d91dbeac922d1794d0a6d63d980b1f637c56ebeae64 -
$ echo "hello sha-512" | shasum -a 512
1e60c690bd7529dbb72bbf7a66f82196ec1445ec0255f4552e46ab527c2746c459949a6d4ad0b5b44d807724abbd5faa9208172df135ea1e657ad453aa42f2e5 -
$ echo "hello sha-512224" | shasum -a 512224
1cf2281d3e39ee4d4b600c5c31677e5938a7c0071479f35f4f71de9d -
$ echo "hello sha-512256" | shasum -a 512256
725ef40941d4c04491d79fcf4a50f439e6046149f3f02c5cca0748fad56d8651 -MAC算法家族
MAC算法结合了MD5和SHA算法的优势,并加入了密钥的支持,是一种更加安全的消息摘要算法。也常称为HMAC
MAC+MD系列算法
- HmacMD2
- HmacMD4
- HmacMD5
MAC+SHA系列算法
- HmacSHA1
- HmacSHA224
- HmacSHA256
- HmacSHA384
- HmacSHA512
版权声明:本文为Dream1248120122原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。