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

Ted*_*ith 45 encryption cryptography rsa sha

SHA1和RSA有什么区别?它们只是不同的算法,还是它们在某种程度上从根本上(即用于不同的事物)不同.

Dav*_*d M 87

根本不同.

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

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

编辑 - Google现在已生成并发布了实际的SHA1冲突.

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

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

  • 还有一点需要注意的是,哈希算法(如SHA-1)可以计算任意长度的数据作为输入的摘要.非对称算法(如RSA)受限于它们可以转换的数据长度.因此,原始消息很少使用RSA进行签名,而是对原始消息的SHA-1摘要进行签名.邮件的收件人及其签名计算邮件的SHA-1摘要,然后使用发件人的公钥解密签名,并验证摘要是否完全匹配. (8认同)
  • 很好的解释 - 您建议使用 AES-256 还是 RSA 进行 e2e 加密? (2认同)

dem*_*guy 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位长的数据,看它们是否匹配.


Spe*_*ort 7

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


Ann*_*naR 5

SHA1是加密散列函数,而RSA是加密算法.

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

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


syb*_*eon 5

正如其他人所评论的,它们本质上是不同的事物,起着不同的作用。您使用RSA将信息加密为看似随机的形式,同时使用SHA1来确保消息的完整性(即,所有位均未更改)。在安全性应用程序中,将根据需要的功能使用一种或两种。