RSA 加密的结果是否保证是随机的

2023-11-30

我使用 RSACryptoServiceProvider 来加密一些小数据块。对于我正在研究的解决方案,重要的是,如果使用相同的公钥对同一段源数据加密两次,则结果(加密的数据块)不相同。

我已经用一个例子对此进行了检查,它的效果正如我所希望的那样。我现在的问题是,这种行为是否是设计使然并得到保证的,或者我是否必须在源数据中添加一些随机部分以保证具有相同数据的数据块在加密后不再匹配。

这是示例:

byte[] data=new byte[]{1,7,8,3,4,5};
RSACryptoServiceProvider encrypter = cert.PublicKey.Key as RSACryptoServiceProvider;
byte[] encryptedData = encrypter.Encrypt(data,true);

// encryptedData has always other values in, although the source data is always
// 1,7,8,3,4,5 and the certificate is always the same (loaded from disk)

具体问题是针对 .net 的,但如果是设计使然的话,也许可以为所有 RSA 实现给出一般性的答案?


教科书上的RSA加密算法是确定性的:

ciphertext = plaintext ^ encryption-exponent  mod  modulus

(Here ^是整数幂,mod求余运算。)

但正如您所说,这并不能提供良好的安全保证,因为可以猜测明文的攻击者可以通过自己加密并比较结果来简单地验证此猜测。

因此,官方 RSA 规范(以及实践中使用的所有实现)包含一些(部分随机)填充,因此我们实际上并不加密plaintext, but pad(plaintext):

ciphertext = pad(plaintext) ^ encryption-exponent  mod  modulus

解密:

plaintext = unpad( ciphertext ^ decryption-exponent mod modulus )

只有这样的填充,RSA才是真正的安全加密方案。

类似的填充也用于 RSA 签名,以避免轻易伪造签名。

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

RSA 加密的结果是否保证是随机的 的相关文章

  • 文件加密与解密问题

    我一直在尝试在 VC Express 2010 中加密和解密文件 我见过的所有教程和文档都需要两个FileStreams 来加密文件 一个用于读取未加密的版本 另一个用于加密 当我实际编写代码时 它不断抛出错误 告诉我它无法打开该文件 因为
  • C# 中的 Bouncy Castle SecureRandom 线程安全吗?

    答案显然是yes https stackoverflow com a 1461624 1709587对于Java中的实现 但是怎么样Org BouncyCastle Security SecureRandom in C 因为据我所知 没有
  • SecurityAction.RequestMinimum 在 .Net 4.0 中已过时

    最近 我们的 Net 客户端库正在升级以针对 Net 4 0 进行编译 将目标框架更改为4 0后 应用程序出现一些编译错误 In AssemblyInfo cs assembly SecurityPermission SecurityAct
  • 使用 2 个不同的哈希函数是检查文件完整性的好方法吗?

    我有一个网站 用户可以上传他们的文件 它们存储在服务器上 其元数据记录在数据库中 我正在实施一些简单的完整性检查 即 该文件的内容现在逐字节与上传时是否相同 示例 对于内容userfile jpg MD5 哈希为39f9031a154dc7
  • 是否曾经建议使用 ECB 密码模式?

    判断从这篇关于密码模式的维基百科文章 http en wikipedia org wiki Block cipher modes of operation以及我听说过的有关 ECB 的其他事情 这是一个很大的禁忌 并且可能会泄露有关您的加密
  • Node.js 进行 rsa 加密的正确方法?

    我正在尝试创建一个 WS 来发出肥皂请求 在消息正文中有一个包含加密文本的字段 我有公钥来加密文本 但我获得的唯一结果是文本无法识别 我使用节点的加密模块来发出请求 并且文本已加密 但我不知道为什么没有正确加密 PS我用 openssl p
  • 将 RSA 密钥从 BigIntegers 转换为SubjectPublicKeyInfo 形式

    WARNING 最初的问题是关于 PKCS 1 编码密钥 而问题中的实际示例需要SubjectPublicKeyInfo X 509 编码密钥 我目前正致力于在 java 中从头开始实现 RSA 算法 特别是密钥生成方面 现在我的代码可以给
  • 如何读取密钥文件以与 HMAC_Init_ex() 一起使用

    我使用 openssl 生成了 RSA 私钥 我需要使用纯 C 语言中的 OpenSSL 库的 HMAC 函数来对数据进行哈希 签名 但我不确定如何从该文件中正确提取私钥数据 据我所知 该文件是 B64 编码的 因此我将其取消编码并将其存储
  • 如何在 Node.js 中获取 RSA 公钥的模数和指数

    我正在创建一个ACME https www rfc editor org rfc rfc8555客户端和我需要找到 RSA 公钥的模数和指数 我使用以下代码生成该公钥 crypto generateKeyPairSync rsa modul
  • 散列密码的最佳实践 - SHA256 还是 SHA512?

    我目前正在使用 SHA256 和盐来哈希我的密码 继续使用 SHA256 更好还是应该更改为 SHA512 切换到 SHA512 几乎不会让您的网站更安全 您不应该编写自己的密码哈希函数 相反 使用现有的实现 SHA256 和 SHA512
  • 在 React Native 和 Expo 中加密敏感数据

    我正在使用 React Native 开发一个移动应用程序Expo https expo io 提供安全解决方案 项目所有者希望在应用程序中存储敏感的授权密钥 用于与 REST 服务器通信并访问安全数据 他要求这些密钥至少是加密的 并且尽可
  • 使用 Microsoft Excel 进行 RSA 加密

    是否有任何现成的适用于 Excel 的 RSA 加密算法实现 只需使用给定的公钥加密纯文本 仅此而已 或者我需要从一开始就实施它 我谷歌但没有发现任何有用的东西 欢迎任何有用的链接 UPDATE 我需要一个非商业图书馆 None
  • xcode ios HMAC SHA 256 哈希

    所以我试图弄清楚如何在 ios 上执行 hmacshad256 哈希 因为这是我为我制作的 wcf 服务 api 所做的哈希 我一直在尝试寻找有关它的一些信息 但通常最终只会得到 SHA 256 哈希值 这是我唯一的参考资料 需要像在 Ja
  • PyCrypto:生成受 DES3 密码保护的 RSA 密钥

    我已经能够使用 DES3 创建受密码保护的 RSA 密钥 嗯 I think因为我对这个加密世界非常陌生 使用以下命令 openssl genrsa out tmp myKey pem passout pass f00bar des3 20
  • 在 C# 中创建我的对称密钥

    一直在审查一些对称加密方法 我看到了很多在类中硬编码私有静态变量的示例 通常类似于 string key THISISYOURENCRYPTIONKEY 然后在更远的地方 代码使用它来加密 解密 抛开正确的实现 算法 策略以及存储它的位置
  • 计算 RSA 128 位密钥长度需要多长时间? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我在网上做了一些研究 似乎表明 RSA 加密的推荐密钥长度是 1024 位 但是我有一个问题 对于今天使用的普通计算机来说 计算 128 位 RSA
  • Delphi AES 库 (Rijndael) 使用 KAT Vectors 进行测试

    对于这两个库 Delphi 加密概要 v 5 2 http code google com p delphidec TurboPower 密码箱 v 2 07 http lockbox seanbdurkin id au tiki list
  • Java RSA 加密

    我正在尝试来回编码一个简单的字符串 测试 public static String encode Key publicKey String data throws NoSuchAlgorithmException NoSuchPadding
  • RSA SignatureException:签名长度不正确

    我在签署 rsa 签名时遇到问题 我有一个用私钥加密的签名 然而 当我尝试使用公钥验证它时遇到问题 我得到以下异常 java security SignatureException Signature length not correct
  • OpenSSL:RSA 加密/解密、密钥生成和密钥持久性

    我正在尝试构建一个需要以下内容的 p2p 应用程序 在 OpenSSL 中使用 RSA Encryption Decryption Generating Keys done Saving and loading keys done Savi

随机推荐

  • 领域 - 删除后无法使用对象

    我的应用程序中有一个视频播放器 集合视图中有一个视频列表 如果您点击其中一个单元格 则会出现一个新的视图控制器来播放所选视频 此外 您还可以在这个新视图控制器中循环浏览集合视图中的所有视频 因为整个列表都会被传递 问题是 当用户处于Play
  • Python PIL图像打开和保存更改图像文件大小?

    我使用PIL打开并保存相同的jpg图像 但尺寸明显减小 有人可以解释一下幕后发生了什么吗 I run a Image open a jpg a save b jpg a jpg 大小为 5MB 而 b jpg 只有 600KB 我把它们放大
  • 如何使用表单操作从 JSP 页面映射 servlet 调用?

    I have a JSP page named Welcome 2 html and in its form action I have invoked a servlet like this
  • 仅允许从 1 个 IP 地址访问所有文件并将所有其他 IP 地址重定向到其他文件

    我不确定以前是否已经回答过这个问题 但我尝试寻找它 无论如何 我目前正在开发一个网站 但我想让实际的网站内容只能从我的 IP 地址访问 然后 我希望 htaccess 将所有其他 IP 地址重定向到我的服务器上的单独文件 该文件将被称为su
  • 由于空值数据未反映

    我有两个表 view shipment order release 和 order release remark 当给定 order release gid 的 order release remark 中没有记录时 则不会显示任何数据 即
  • 为.NET编译C代码[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 如何编译 C 代码以在 NET 中使用 有一个用C语言编写的游戏 如何将其转换为 Net
  • 新 Rails 安装 - 没有要加载的文件 - phusion_passenger/alalytics_logger

    我刚刚在服务器上安装了 Ruby on Rails 但在查看页面时不断收到以下错误 Error Message No such file to load phusion pasenger analytics logger 当前安装 乌班图
  • 使用 find() Motor 时发生 BadYieldError [MongoDB + Tornado]

    我是 python 龙卷风框架的新手 我在 MongoDB 中有一小部分数据 我在 python 文件中使用一个简单的 get 函数 我得到一个BadYieldError当使用db collection find 选项 但db collec
  • C# 中大于/小于号(例如 Action>)意味着什么?

    example public event Action
  • 如何在 Presto 中将日、月、年字段合并为日期?

    我的表中的条目与日期一起保存为不同的字段day month and year 我想将日期读取为日期类型 正确的做法是什么 其他方式 date format d d d 2020 3 31 基于在 Presto 上计算日期和周末日期
  • Windows 多处理

    我发现 Windows 在多处理方面有点笨拙 我对此有疑问 pydoc 指出你应该使用多处理时保护 Windows 应用程序的入口点 这是否意味着仅创建新进程的代码 例如 Script 1 import multiprocessing de
  • 重定向在 WordPress 中不起作用?

    我正在使用下面的代码在 WordPress 中进行重定向 currentPage explode SERVER REQUEST URI current page url currentPage 0 if current page url e
  • 查找 _id 在 mongodb 中不起作用

    我有一个名为 Releases 的集合 其中包含一个名为 Product 的子文档 我的收藏看起来像这样 id ObjectId 5b1010e4ef2afa6e5edea0c2 version abc description p abc
  • 当新电子邮件到达共享邮箱中的任何子文件夹时运行代码

    我想在任何新电子邮件到达特定共享邮箱时运行代码 当电子邮件到达 INBOX 文件夹时触发该事件 如果新电子邮件直接进入其子文件夹 则该事件不会触发 例如 电子邮件受保护 收件箱 子文件夹1 如果收件箱中的任何子文件夹收到新电子邮件 我应该更
  • 赌场 24/7 员工名册的数据库模型

    我们目前使用基于笔 纸的名册来管理赌场的桌面游戏工作人员 每行代表一名员工 每列代表 20 分钟的时间段 每个单元格代表员工被分配到的表 或者他们被分配到休息时间 员工轮班的开始和结束时间各不相同 他们可以处理的游戏 技能也各不相同 我们需
  • 编译并运行C++代码运行时

    有谁知道如何在程序运行时编译您编写的 C 代码 后来我想运行该代码 我想这样做是因为我正在尝试制作一款可以教您编程的游戏 因此用户必须在游戏运行时编写代码并进行测试 谢谢你的帮助 如果您选择一种在设计时考虑到嵌入的语言 例如 LUA 或 p
  • 如何在 Prolog 中将谓词作为另一个谓词的参数传递?

    我有这 3 个谓词 times X Y Result is X Y minus X Y Result is X Y plus X Y Result is X Y 例如我想通过times 2 2 in the plus X Y 像这样plus
  • JVM 是开源代码吗?

    JVM 是开源代码吗 如果没有 如何获取JVM的代码 这完全取决于您使用哪个 JVM 如果您使用 OpenJDK JVM 那么您可以从以下位置获取源代码here or here来自 OpenJDK 项目列表 或者here来自 GitHub
  • 无法连接到SQL Server 2008?

    我一直在尝试各种技巧 从启用 TCP IP 向防火墙添加例外到戳比尔盖茨巫毒娃娃 但似乎没有什么对我有用 通过management studio连接到sql server 2008真的那么难吗 也许 抢劫银行会更容易 当我弄清楚要抢劫哪家银
  • RSA 加密的结果是否保证是随机的

    我使用 RSACryptoServiceProvider 来加密一些小数据块 对于我正在研究的解决方案 重要的是 如果使用相同的公钥对同一段源数据加密两次 则结果 加密的数据块 不相同 我已经用一个例子对此进行了检查 它的效果正如我所希望的