跳到主要内容

哈希算法 (Hash)

概念分析:

Hash:通常翻译为“散列”,或“哈希”;就是把任意长度的二进制数据,通过散列算法,变换成固定长度的输出,即该输出就是散列值。

哈希冲突(碰撞): 指不同的数据,得到了同样的散列值,即为发生冲突(碰撞)。

Hash中的算法

也称消息摘要算法 消息摘要(Message Digest)又称数字摘要(Digital Digest),该摘要是一个唯一对应一个消息或文本的固定长度的值,,它由一个单向Hash加密函数对消息进行作用而生成,本质就是:散列表或者哈希值。

SHA算法

SHA(Secure Hash Algorithm)算法称为安全散列算法,能计算出一个数字消息对应到的长度固定的字符串(又称消息摘要)的算法。 该算法又细分为:SHA-1、SHA-224、SHA-256、SHA-384、SHA-512这五种算法,其中后四种并称为SHA-2算法。

SHA-1在许多安全协定中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5的后继者 但SHA-1的安全性如今被密码学家严重质疑;虽然至今尚未出现对SHA-2有效的攻击,它的算法跟SHA-1基本上仍然相似

  • 特点:
    • 由讯息摘要反推原输入讯息,从计算理论上来说是很困难的。 不可逆
    • 想要找到两组不同的讯息对应到相同的讯息摘要,从计算理论上来说也是很困难的。
    • 任何对输入讯息的变动,都有很高的机率导致其产生的讯息摘要迥异。无冲突

MD5算法

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。

  • 特点:
    • 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

    • 2、容易计算:从原数据计算出MD5值很容易。

    • 3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

    • 4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。