SHA 和 RSA 的区别

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

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

原文来自于 stackoverflow:https://stackoverflow.com/questions/733692/sha1-vs-rsa-whats-the-difference-between-them

根本不同

SHA1是一种哈希算法,是一种单向函数,可将任何大小的输入转换为固定长度的输出(在这种情况下为160位)。 密码散列函数是这样一种函数,除了蛮力之外,不可能找到两个给出相同输出的输入(例如,对于128位函数,您应该平均尝试2 ^ 64条消息才能找到这样的散列函数) 由于发生了“生日悖论”,导致了“碰撞”-Google为其提供了更多信息)

实际上,对于SHA1而言,情况已不再如此-该算法(至少在密码学意义上)现在被破坏了,由Xiaoyun Wang等人描述的碰撞攻击击败了典型的生日攻击。 SHA2系列没有被破坏,NIST正在开发一个程序以商定SHA3算法或算法系列。

Google现在已经生成并发布了实际的SHA1碰撞。

RSA是一种非对称加密算法,将输入加密为输出,然后可以将其解密(与不可逆的哈希算法形成对比)。 它使用与加密(专用)不同的密钥(公用)。 因此,它可以用来接收来自其他人的加密消息-您可以发布您的公共密钥,但是只有拥有私有密钥的您才能解密已被其加密的消息。

如果您将RSA的密钥反向,则可以将其用于生成数字签名-通过使用您的私有密钥加密某些内容,任何人都可以使用公共密钥对其进行解密,如果他们确定公共密钥属于您,则他们拥有 相信您是对原始文件进行加密的人。 通常,这是与哈希函数结合完成的:先哈希输入,然后使用私钥加密,为输入消息提供固定长度的数字签名。

RSA效率不高,但SHA效率高

假设您下载Windows 7,并想确定它是否是Microsoft的原始Windows 7。 如果Microsoft仅通过RSA加密Windows 7,则将花费很长的时间来使我们完全受不了它。 因此,Microsoft在Windows 7上使用SHA1并生成128位长的数据。 然后,Microsoft使用RSA(使用其私钥)对该128位长的数据进行加密。

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

SHA1是一种哈希算法(哈希算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等,常用于文档和证书签名),而RSA是一种加密/解密算法(安全通信)。

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

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

哈希函数获取一条数据并返回固定长度的字符串。 在密码哈希函数中,所有返回字符串具有相同的概率。 仅给出哈希数,您将无法确定输入,也找不到其他给出相同哈希值的输入(可能性非常小的执行)。 Sha1有一些安全漏洞。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值