SHA 和 RSA 的区别

2023-11-02

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

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

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SHA 和 RSA 的区别 的相关文章

  • java中使用rsa加密和解密大文件

    我正在使用 RSA 算法对大小超过 rsa 密钥大小的文件进行加密和解密 在下面的加密代码中 我正在按块读取文件内容并转换为密文 块大小为 32 字节 FileInputStream fin1 new FileInputStream gen
  • 如何根据RSA的公开指数和模生成DER/PEM证书?

    众所周知 公钥由公共指数和模数组成 我的问题是 如何根据RSA的公开指数和模生成DER PEM证书 预先非常感谢您 有了公共指数和模数 您最希望得到的结果是 BEGIN PUBLIC KEY MIGGAoGAfHlcdrcuOK6C02rb
  • 为什么 KeyPairGenerator.genKeyPair() 这么慢

    我有一些 Java 代码 当我运行函数时KeyPairGenerator genKayPair 工作时间为 40 秒或更长时间 如何改变这种现状呢 如果我跑 openssl req x509 nodes days 365 newkey rs
  • 如何从 Base64 编码字符串构造 java.security.PublicKey 对象?

    我有一个来自外部源 Android Store 的 bse64 编码字符串公钥 我需要用它来验证签名内容 如何将字符串转换为 java security PublicKey 接口的实例 如果这有什么区别的话 我正在使用 Java 6 密钥
  • 如何从 SSL 证书中提取密钥?

    我有一个在以下网站购买的 SSL 证书 pem crt der格式 我想知道如何从证书中获取密钥文件 有什么办法可以做到这一点吗 您可以提取公钥 这的用处有限 也许您将在其他不使用证书的工具 例如 SSH 或 PGP 中使用相同的密钥 使用
  • BigIntegers、gcd、模逆来查找公钥

    所以 我使用 java 来查找 RSA 密码的公钥 现在我不确定我在做什么 也不确定它是否正确 我有公钥的信息 C 5449089907 n p q 8271344041 q 181123 p n q 45667 d 53 phi n p
  • 如何使用 Go 编程语言从 PEM 文件读取的 RSA 私钥进行加密?

    如何在 go 中执行与以下 C 代码等效的操作 RSA key PEM read RSAPrivateKey f NULL NULL NULL std vector
  • Perl 中的 SHA256 摘要

    我需要对电子邮件地址进行 SHA256 哈希 并且需要将结果作为字符串 我尝试了以下方法 use Digest SHA qw sha256 my data swara email protected cdn cgi l email prot
  • 使用 XmlCipher (RSA) 加密 XML 文件

    我只需要使用公钥加密一些 XML 元素 我成功地可以将此代码与 simetric 算法 XMLCipher AES 128 一起使用 但在尝试使用 XMLCipher RSA v1dot5 时失败 这就是代码 import java sec
  • 如何在 Python 中使用 PKCS12 对 RSA 密钥进行编码?

    我正在使用 Python 在 Google App Engine 下 并且我有一些需要以 PKCS 12 格式导出的 RSA 私钥 有什么可以帮助我的吗 我正在使用 PyCrypto KeyCzar 并且我已经弄清楚如何以 PKCS8 格式
  • PHP使用RSA私钥解密数据

    我有一个程序 使用 C rsa 公钥加密密码 输出字节数组 为了让我轻松传输它并维护数据 我将字节直接转换为十六进制字符串 现在这就是我遇到问题的地方 我将发布数据发送到我的脚本 现在不确定将其转换为什么以及如何解密它 我正在尝试使用htt
  • 使用未定义常量 CRYPT_SHA512

    我使用一个 php 脚本 该脚本使用 php 的 crypt 并使用 SHA512 对密码进行哈希处理 但是当我尝试检查 SHA512 是否已设置时 出现上述错误 当然我知道为什么我会收到这个错误 php 缺少一些依赖项 我只是不知道这种依
  • 在 Android 中解密从 .net 生成的 RSA 加密值

    我在这里浏览了很多帖子 但没有找到正确的解决方案 我想从 Android 解密在 c net 中加密的值 我已使用以下代码片段在 net平台中成功解密 public static void Main string privateKey Ba
  • 如何从 ActionMailer 发送签名电子邮件?

    我使用 GMail 作为我的 SMTP 服务器 我的配置工作得很好 config initializers action mailer rb ActionMailer Base smtp settings tls gt true addre
  • 健全性检查 SSH 公钥? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我已要求用户提供他们的公共 id rsa pub ssh 密钥 然后将其放入 home theiraccount ssh authorized key
  • 将 webcrypto 密钥导出为 PEM 格式

    我正在将 WebCrypto 与 RSASSA PKCS1 v1 5 结合使用 https github com diafygi webcrypto examples rsassa pkcs1 v1 5 sign https github
  • openssl_pkey_get_public 未打开公钥,“无起始行”错误

    当生成公钥然后用函数读取它时openssl pkey get public publicKeyResource bool false 和消息 错误 0906D06C PEM 例程 PEM read bio 无起始行 privateKey o
  • PHP服务器端IAB验证openssl_verify总是返回0

    我使用以下函数 服务器端 php 来验证 IAB v3 事务 我从 Android 应用程序传递过来 Override protected void onActivityResult int requestCode int resultCo
  • 无法在 Java 中输出正确的哈希值。怎么了?

    在我的 Android 应用程序中 我有一个 SHA256 哈希值 我必须使用 RIPEMD160 消息摘要算法进一步对其进行哈希值 我可以输出任何字符串的正确 sha256 和ripemd160 哈希值 但是当我尝试使用ripemd160
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S

随机推荐

  • gzip压缩

    1 开GZIP有什么好处 答 Gzip开启以后会将输出到用户浏览器的数据进行压缩的处理 这样就会减小通过网络传输的数据量 提高浏览的速度 2 如何启用IIS的Gzip压缩功能 答 首先 如果你需要压缩静态文件 HTML 需要在硬盘上建一个目
  • vue中el-select选择器实现触底加载,通过自定义指令(directives)实现

    vue中el select选择器实现触底加载 通过自定义指令 directives 实现 1 使用自定义指令 v XXXX 初始化我是默认展示20条数据
  • C 语言判断回文数

    判断一个数是否为回文数 设n是一任意自然数 若将n的各位数字反向排列所得自然数n1与n相等 则称n为一回文数 例如 若n 1234321 则称n为一回文数 但若n 1234567 则n不是回文数 include
  • 操作系统sp1、sp2、sp3是什么意思

    电脑系统的sp1 sp2 sp3的意思分别是 第一版补丁包 第二版补丁包 第三版补丁包 SP1是系统发布后第一个SP包 Win7的SP1主要包含自Win7正式发布至SP1编译完成的几乎所有补丁和少量功能更新 SP2增设众多功能来为用户提供安
  • 关于scp上传文件到远程服务器失败问题的解决

  • 一篇文章带你登顶 MacBook 高效工作环境配置

    工欲善其事 必先利其器 工具永远都是用来解决问题的 没必要为了工具而工具 一切工具都是为了能快速准确的完成工作和学习任务而服务 本文记录 MacBook 整个配置过程 供新入手 MacBook 和觉得 MacBook 比较难用的同学参考 转
  • 解决各大航空公司空运轨迹查询网站访问无响应或轨迹查询不了问题

    一 解决访问不了网站问题 情况描述 这种情况也不是一直访问不了 时好时坏的 员工上班高峰期使用的时候访问不了就很烦 走代理访问是正常的 排除是公司网络的问题 在家里测试也是同样的情况 深圳地区 其它地区不知道有无此情况 公司有开海外专线 防
  • armbian 斐讯n1_斐讯N1刷Armbian Linux做服务器

    N1上了不到两个月 斐讯就翻车了 现在N1也挖不了矿 作为NAS又太鸡肋 看到可以刷Armbian系统还是很激动的 可以作为服务器折腾一下 这里记录一下刷机的过程 工具准备DiskImager 降img文件写入U盘的工具 降级分区 boot
  • ESP32+INMP441+DHT11+OLED+网页+Arduino——“智能”语音天气站(2):INMP441录音生成wav文件

    参考视频 Recording using INMP441 参考代码 学会了代码复用 Recording using INMP441 知识 什么是wav文件 可以在维基百科找到wav文件的历史渊源 这个网站有一个详尽的wav格式说明 wav格
  • PyTorch基础系列(三)——深入理解autograd:Variable属性方法【最新已经和tensor合并为一类】

    torch autograd backward variables grad variables retain variables False 当前Variable对leaf variable求偏导 计算图可以通过链式法则求导 如果Vari
  • 高德地图:缺少定位权限(实际上权限已经打开)

    使用高德地图 获取定位的过程中 出现以下问题 ErrorCode 12 errorInfo 缺少定位权限 请到http lbs amap com api android location sdk guide utilities errorc
  • idea远程调试

    一 业务 服务器与本地环境不一样 二 需求 如果服务器报错 使用本地idea进行远程debug调试 三 解决方案 本地idea远程debug调试 四 具体操作 1 第一步 IDEA打开远程启动的springboot应用程序所对应的本地spr
  • 剑指Offer - 面试题10:斐波那契数列

    题目一 求斐波那契数列的第n项 写一个函数 输入n 求斐波那契 Fibonacci 数列的第n项 斐波那契数列的定义如下 分析 递归法 给出的公式用递归是最简单的 但是也是效率很低的 C include
  • 电磁波的发射和接收

    电磁波的发射和接收 作者 佚名 教案来源 网络 点击数 2628 电磁波的发射和接收 本资料为WORD文档 请点击下载地址下载 全文下载地址 文章 来源莲山 课 件 w w w 5y K J Co m 14 3 电磁波的发射和接收 教学目标
  • 计算机网络-15 网络测量

    第十五讲 网络测量 概述 定义 按照一定方法和技术 使用硬件或软件来量度网络运行状态 表征网络特性的一系列活动的总和 应用 监测网络故障 测试协议行为 刻画流量特征 评估网络性能 几个重大发现 协议方面 TCP协议占了大部分网络流量 流量方
  • AVL 平衡二叉搜索树 支持键值 简介+实现

    为什么要平衡 什么是平衡 平衡因子 不平衡的情况和平衡的方法 LL RR LR RL 删除操作 实现 AVL是发明这个算法的两个大神 Adelson Velsky and Landis 的名字首字母 为什么要平衡 一般的搜索树 如果元素是顺
  • ggplot2 画分面的柱状图

    ggplot2 画分面的柱状图 直接上代码 df read table class txt header TRUE ggplot data df mapping aes x factor samples y y fill class geo
  • yaml配置文件

    最近在写代码 发现随着网络的增加 代码变得越来越冗余 所以就想着写一个网络的配置文件 把网络的配置放到一个文件中 而不再主函数中 这样代码开起来就好看了 调试的时候也方便了 之前写过一篇神经网络配置文件的文章 config配置文件原理及使用
  • 一个Mini的ASP.NET Core框架的实现

    转自 https www cnblogs com edisonchou p aspnet core mini implemention introduction html 一 ASP NET Core Mini 在2019年1月的微软技术
  • SHA 和 RSA 的区别

    SHA VS RSA 它们之间有什么区别 SHA 和 RSA 有什么区别 它们只是不同的算法还是在某种程度上从根本上 即用于不同事物 不同 原文来自于 stackoverflow https stackoverflow com questi