如何使用RSA加密对相同的数据获得相同的结果

本文关键字:结果 数据 何使用 RSA 加密 | 更新日期: 2023-09-27 18:21:49

我需要一种非对称加密算法,它总是对相同数据加密相同的结果。当我使用RSACryptoServiceProvider时,它总是为相同的输入提供不同的加密数据。

byte[] encrypted1, encrypted2; 
using ( var RSA1 = new RSACryptoServiceProvider() )
{    
    encrypted1 = RSA1.Encrypt(data, false);
    encrypted2 = RSA1.Encrypt(data, false); 
}

这里CCD_ 2和CCD_。

我听说这是由新RSA实现的随机填充能力引起的。但即使我将padding设置为false,也会发生这种情况。所以

  1. 有什么办法可以改变这种行为吗
  2. 这份工作还有其他算法吗?如果有什么

如何使用RSA加密对相同的数据获得相同的结果

您所指的布尔值并不意味着打开或关闭填充。它使用OAEP填充或PKCS#1 v1.5填充(它本来就不应该是布尔值,它应该是枚举值)。两种填充机制都部署(部分)随机化填充。只要你的随机源确实是随机的,输出就不会是确定性的

当然,您可以创建自己的填充,例如使用Bouncy Castle的BlindedRSAEngine,但如果删除随机填充,则会使RSA的安全性失效。只有当您完全理解其中的含义时,才能这样做,例如这里所示。

换句话说:不要去那里。