MD5、SHA-1、SHA-2、SHA-3都是比较常见的单向散列函数,这几种单向散列函数都有自己的特性。下面,给大家介绍一下它们的区别,以及MD5、SHA-1、SHA-2、SHA-3的安全性如何,哪种算法比较安全?
一、简介
单向散列函数是指对不同的输入值,通过单向散列函数进行计算,得到固定长度的输出值。这个输入值称为消息(message),输出值称为散列值(hash value)。
单向散列函数也被称为消息摘要函数、哈希函数或者杂凑函数。输入的消息也称为原像(pre-image)。输出的散列值也称为消息摘要(message digest)或者指纹(fingerprint),相当于该消息的身份证。
单向散列函数有多种实现算法,常见的有:MD5、SHA-1、SHA-2和 SHA-3。
二、有哪些特性
1、散列值长度固定
无论消息的长度有多少,使用同一算法计算出的散列值长度总是固定的。比如 MD5 算法,无论输入多少,产生的散列值长度总是 128 比特(16字节),SHA-1散列值长度160比特。
2、消息不同其散列值也不同
使用相同的消息,产生的散列值一定相同。
使用不同的消息,产生的散列值也不相同。哪怕只有一个比特的差别,得到的散列值也会有很大区别。
3、具备单向性
只能通过消息计算出散列值,无法通过散列值反算出消息。
4、计算速度快
计算散列值的速度快。尽管消息越长,计算散列值的时间也越长,但也会在短时间内完成。
三、常见的算法有哪些?
除了MD5 与 SHA-1 算法已被攻破,在新的用途不建议使用;其他如SHA-2 与 SHA-3 还是安全的,可以使用。SHA-2包括:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。SHA-3包括:SHA3-224、SHA3-256、SHA3-384、SHA3-512。
四、为什么说MD5不够安全?
因为字典表很大,网上有很多md5解密网站(例如:md5.cn),就像一个字典表。通过数据库存储很多的常用密码,可以在很短的时间内查找任何哈希值的答案。这种数据库占用大量的磁盘空间,具有一定的成功率。在计算机安全领域,很多人用到MD5解密网站,通过这类型的网站,可以提高工作效率,大家可以去试试。
五、主要区别
1、校验值的长度不同,MD5校验位的长度是16个字节(128位);SHA1是20个字节(160位);SHA256是32个字节(256位); SHA384为48字节(384位)、SHA512为64字节(512位)。
2、运行速度不同,SHA-3的运行速度最慢,然后是SHA-2,SHA1,最后是MD5。
六、哪种算法比较安全?
SHA-2 与 SHA-3 还是安全的,比MD5 与 SHA-1安全。
七、应用场景有哪些?
应用场景有:用户密码保护、接口验签、文件完整性校验、云盘秒传等。
MD5、SHA-1、SHA-2、SHA-3在计算机安全领域,得到广泛的应用,以上就是这些算法的特性以及区别。小伙伴们可以根据实际情况灵活地选用这些算法,以达到实际目的。