Hash 什么';散列算法SHA-2和SHA-3的区别是什么?

Hash 什么';散列算法SHA-2和SHA-3的区别是什么?,hash,cryptography,cryptographic-hash-function,Hash,Cryptography,Cryptographic Hash Function,我知道SHA-224、SHA-256、SHA-384和SHA-512都是该系统的一部分。但是现在还有一个新的SHA-3哈希算法 你能告诉我SHA-2和SHA-3的区别吗?何时以及为什么我应该使用SHA-3?SHA-3实际包括哪些安全哈希算法?,也称为Keccak(在被选为冠军之前的原名),是一种全新的哈希算法,与SHA-1和SHA-2无关 事实上,NIST之所以选择Keccak而不是其他SHA-3竞赛决赛选手,其中一个原因是其与现有SHA-1/2算法的不同;有人认为,这种差异使其更好地补充了现有

我知道SHA-224、SHA-256、SHA-384和SHA-512都是该系统的一部分。但是现在还有一个新的SHA-3哈希算法

你能告诉我SHA-2和SHA-3的区别吗?何时以及为什么我应该使用SHA-3?SHA-3实际包括哪些安全哈希算法?

,也称为Keccak(在被选为冠军之前的原名),是一种全新的哈希算法,与SHA-1和SHA-2无关

事实上,NIST之所以选择Keccak而不是其他SHA-3竞赛决赛选手,其中一个原因是其与现有SHA-1/2算法的不同;有人认为,这种差异使其更好地补充了现有的SHA-2算法(该算法仍被认为是安全的,并由NIST推荐),同时也降低了未来密码分析突破会危及SHA-2和SHA-3安全性的可能性

出于某种背景,在一些新的密码分析攻击对SHA-1的安全性提出质疑后,NIST于2007年宣布了SHA-3哈希函数竞赛。尽管当时对SHA-1的攻击主要是理论上的,但人们担心,对这些技术的进一步改进可能会允许对SHA-1进行实际的碰撞发现攻击,同样的技术也可能应用于与SHA-1具有类似设计的SHA-2。因此,NIST决定举办竞赛,为SHA-2选择一个继任者,命名为SHA-3

然而,尽管现实世界中发生了对SHA-1的碰撞攻击,但令人担忧的对SHA-2的攻击并未实现。现在人们普遍认为,摧毁SHA-2不会像十年前那样容易,因此在可预见的未来,所有的SHA-2变种仍然被认为是安全的。然而,由于NIST承诺将在2012年选择SHA-3,并且由于许多人花费了大量的时间和精力提交和评估新的哈希函数用于竞赛,并且由于决赛选手中有一些非常好的设计,毕竟,如果不选择他们中的任何一个作为赢家,那似乎是一种耻辱。因此,NIST决定选择Keccak作为SHA-3,并推荐它作为SHA-2散列函数的替代(而不是后续)函数


这意味着,如果您想要一个安全且标准化的哈希函数,您可以选择SHA-2或SHA-3。如果你真的觉得有点偏执,你甚至可能想同时使用这两种方法,并设计你的密码系统,这样即使其中一个散列函数被破坏,它仍然是安全的。

如果你不知道自己在做什么,同时使用这两个散列函数可能会有点危险。当然,这取决于你想要实现什么。如何实现?(这里不确定潜在的陷阱…)这里不是密码分析师,但我认为危险可能意味着碰撞sha3(sha2(X))可能比碰撞sha2(X)或sha3(X)更容易,也可能意味着同时提供sha2(X)和sha3(X)可能会泄露更多关于X的信息,从而使猜测X更容易。@xuinkrbin。这是一个耻辱,因为它是这个论坛的主题-这个问题最好在crypto.stackexchange。请注意,我们现在只有一个答案,不能添加其他答案。因此,即使Ilmari的回答还不错,这也不可能成为对谷歌有用的打击。但我已经删除了我的冒犯性言论。这对我很有用。:-)