SHA1 VS RSA:它们之间有什么区别?

时间:2009-04-09 10:47:45

标签: encryption cryptography rsa sha

SHA1和RSA有什么区别?它们只是不同的算法,或者它们在某种程度上是基本的(即用于不同的东西)不同。

6 个答案:

答案 0 :(得分:81)

根本不同。

SHA1 是一种散列算法,它是一种单向函数,可将任意大小的输入转换为固定长度的输出(在本例中为160位)。加密哈希函数是一个加密哈希函数,除了暴力之外不应该找到两个输出给出相同的输出(例如,使用128位函数,你应该平均尝试2 ^ 64消息来找到这样的一个因为生日悖论之类的东西而“碰撞” - 谷歌它的更多内容。

事实上对于SHA1来说已经不再是这种情况了 - 现在这个算法(至少在加密术语中)被打破了,小云王等人描述的碰撞攻击击败了经典的生日攻击。 SHA2系列没有被破坏,NIST正在就一个SHA3算法或算法系列达成一致。

修改 - Google现已生成并发布了实际的SHA1冲突。

RSA 是一种非对称加密算法,将输入加密为输出然后可以解密(对比不能反转的散列算法)。它使用不同的加密密钥(公共密钥)而不是解密密钥(私有密钥)。因此,这可以用于接收来自其他人的加密消息 - 您可以发布您的公钥,但只有您使用私钥才能解密使用它加密的消息。

如果您反转RSA的密钥,它可用于生成数字签名 - 通过使用您的私钥加密某些内容,任何人都可以使用公钥对其进行解密,如果他们确定公钥属于您,然后他们相信你是加密原件的人。这通常与散列函数一起完成 - 您对输入进行散列,然后使用私钥对其进行加密,为输入消息提供固定长度的数字签名。

答案 1 :(得分:9)

之前的答案已经足够解释了。但我认为你问这个问题只是因为SHA和RSA经常出现在一起。所以让我解释一下原因。

首先,请记住

RSA效率不高,但SHA是。

假设您下载了Windows 7,并希望确定它是否是Microsoft的原始Windows 7。如果微软只是通过RSA对Windows 7进行加密,则需要很长时间才能实现,我们根本无法做到这一点。因此,Microsoft在Windows 7上使用SHA1并生成128位长的数据。然后Microsoft使用RSA加密这个128位长的数据(使用其私钥)。

然后,您需要做的就是确保您的公钥来自Microsoft。然后使用SHA1生成128位长的数据。然后使用RSA的公钥来解密微软的签名。然后,您只需比较两个128位长的数据,看它们是否匹配。

答案 2 :(得分:7)

SHA1是一种散列算法(文档和证书签名),而RSA是加密/解密算法(安全通信)。

答案 3 :(得分:5)

SHA1是加密哈希函数,而RSA是加密算法。

哈希函数接收一段数据并返回一个固定长度的字符串。在加密散列函数中,所有返回字符串具有相同的概率。只给出哈希值,你无法确定输入,也不能找到另一个给出相同哈希值的输入(具有非常小概率的excpetion)。 Sha1有一些安全漏洞。

加密算法会获取一段数据,但输出的长度不一定 - 加密。给定输出(加密),您可以(如果您有正确的键)确定输入。

答案 4 :(得分:5)

正如其他人所评论的那样,它们在根本上是不同的东西,提供不同的功能。您使用RSA将信息加密成看似随机的形式,而使用SHA1来确保消息的完整性(即没有任何位已更改)。在安全应用程序中,您将使用其中一个或两个,具体取决于您需要的功能。

答案 5 :(得分:-5)

安全散列算法(SHA)算法获取长度小于264位的消息,并生成160位消息摘要。该算法比MD5略慢,但更大的消息摘要使其更安全地抵御暴力冲突和反转攻击。安全哈希标准(SHS,FIPS 180)中规定的算法由NIST开发。 SHA-1是对SHA的修订版,于1994年出版;该修订纠正了SHA中未发表的缺陷。它的设计与Rivest开发的MD4系列哈希函数非常相似。 SHA-1也在ANSI X9.30标准中描述。

RSA是一种用于公钥加密的算法。它是已知的第一种适用于签名和加密的算法,也是公钥加密技术的第一个重大进步之一。 RSA广泛用于电子商务协议,并且在给定足够长的密钥和使用最新实现的情况下被认为是安全的。

最显着的区别是SHA是加密算法,而RSA既是加密又是签名算法。

2005年8月16日,宣布可以在2 ^ 63次操作中在SHA-1中发现碰撞。该研究成果归功于北京清华大学的王晓云教授,以及Andrew Yao和Frances Yao教授。它扩展了Wang,Yin和Yu的工作,证明了在2 ^ 69次操作中可以发现碰撞。这意味着在SHA中比在RSA中更容易发生碰撞 - 但值得注意的是,没有发现任何碰撞的类似密钥。

相关问题