博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SHA 和 RSA 的区别
阅读量:4229 次
发布时间:2019-05-26

本文共 1446 字,大约阅读时间需要 4 分钟。

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

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

原文来自于 stackoverflow:

根本不同

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有一些安全漏洞。

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

 

转载地址:http://ksjqi.baihongyu.com/

你可能感兴趣的文章
rabbitmq基础知识介绍及总结
查看>>
StackOverFlow异常记录
查看>>
SpringMvc4.1:注解JsonView与泛型返回类
查看>>
SpringMVC+Mybatis+事务回滚+异常封装返回
查看>>
计算机网络实验报告(三):Cisco Packet Tracer 实验
查看>>
嵌入式系统基础学习笔记(九):基于 SPI 协议在 0.96 寸 OLED上【平滑显示汉字】及【温湿度数据采集显示】
查看>>
嵌入式系统基础学习笔记(十):
查看>>
网络通信编程学习笔记(七):Java与MQTT
查看>>
人工智能与机器学习学习笔记(二)
查看>>
Run Your Own Web Server Using Linux & Apache
查看>>
Java I/O
查看>>
SQL Server 2005 T-SQL Recipes: A Problem-Solution Approach
查看>>
Core Python Programming
查看>>
Creating Database Web Applications with PHP and ASP
查看>>
ASP.NET 2.0 Demystified
查看>>
Pattern-Oriented Software Architecture, Volume 2, Patterns for Concurrent and Networked Objects
查看>>
Pattern-Oriented Software Architecture, Volume 1: A System of Patterns
查看>>
Database Programming with Visual Basic® .NET and ADO.NET: Tips, Tutorials, and Code
查看>>
Visual Basic 2005 Express: Now Playing
查看>>
Jakarta Struts Cookbook
查看>>