【发布时间】:2010-10-18 12:50:37
【问题描述】:
SHA1 和 RSA 有什么区别?它们只是不同的算法,还是从根本上(即用于不同的事物)在某种程度上不同。
【问题讨论】:
-
“根本不同”是什么意思?
标签: encryption cryptography rsa sha
SHA1 和 RSA 有什么区别?它们只是不同的算法,还是从根本上(即用于不同的事物)在某种程度上不同。
【问题讨论】:
标签: encryption cryptography rsa sha
根本不同。
SHA1 是一种散列算法,它是一种单向函数,将任意大小的输入转换为固定长度的输出(本例中为 160 位)。加密散列函数是这样一种函数,它不应该找到两个给出相同输出的输入,除非通过蛮力(例如,对于 128 位函数,您应该平均需要尝试 2^64 消息才能找到这样的“碰撞”是由于所谓的生日悖论 - 谷歌搜索更多信息)。
事实上,SHA1 不再是这种情况了——该算法(至少在密码学术语中)现在已经被破坏,Xiaoyun Wang 等人描述的碰撞攻击击败了经典的生日攻击。 SHA2 系列没有被破坏,NIST 正在进行一个过程,以就 SHA3 算法或算法系列达成一致。
编辑 - Google 现在已经生成并发布了一个实际的 SHA1 冲突。
RSA 是一种非对称加密算法,将输入加密为可解密的输出(对比无法反转的哈希算法)。它使用不同的密钥进行加密(公共密钥)与解密密钥(私有密钥)。因此,这可用于接收来自其他人的加密消息 - 您可以发布您的公钥,但只有拥有私钥的您才能解密已使用它加密的消息。
如果您反转 RSA 的密钥,它可用于生成数字签名 - 通过使用您的私钥加密某些内容,任何人都可以使用公钥对其进行解密,如果他们确定公钥属于您,那么他们就有信心你是加密原件的人。这通常与哈希函数一起完成 - 您对输入进行哈希处理,然后使用您的私钥对其进行加密,为您的输入消息提供一个固定长度的数字签名。
【讨论】:
前面的答案已经足够解释了。但我认为你问这个问题只是因为 SHA 和 RSA 经常一起出现。所以让我解释一下为什么。
首先,请记住
假设您下载了 Windows 7,并想确定它是否是 Microsoft 的原始 Windows 7。如果微软只是通过 RSA 加密 Windows 7,那将需要很长时间才能做到这一点,我们根本无法忍受。所以微软在 Windows 7 上使用 SHA1 并生成一个 160 位长的数据。然后微软用 RSA 签署这个 160 位长的数据(使用它的私钥)。
然后,您需要做的就是确保您的公钥来自 Microsoft。然后也使用 SHA1 生成 160 位长的数据。然后使用 RSA 的公钥解密微软的签名。然后你只需比较这两个 160 位长的数据,看看它们是否匹配。
【讨论】:
SHA1 是一种散列算法(文档和证书签名),而 RSA 是一种加密/解密算法(安全通信)。
【讨论】:
正如其他人所评论的,它们本质上是不同的东西,服务于不同的功能。您使用 RSA 将信息打乱成看似随机的形式,同时使用 SHA1 来确保消息的完整性(即所有位都没有更改)。在安全应用程序中,您将使用一种或两种,具体取决于您需要的功能。
【讨论】:
SHA1 是一种加密散列函数,而 RSA 是一种加密算法。
散列函数接受一段数据并返回一个固定长度的字符串。在密码散列函数中,所有返回字符串具有相同的概率。仅给定哈希数,您无法确定输入,也无法找到另一个给出相同哈希的输入(概率非常小的异常)。 Sha1 存在一些安全漏洞。
加密算法给出了一段数据,但输出不是固定长度 - 您的加密。给定输出(加密),您可以(如果您有正确的密钥)确定输入。
【讨论】:
安全散列算法 (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 中更容易发生冲突 - 但值得注意的是,从未发现有两个相似的密钥发生冲突。
【讨论】: