如何使用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,也会发生这种情况。所以
- 有什么办法可以改变这种行为吗
- 这份工作还有其他算法吗?如果有什么
您所指的布尔值并不意味着打开或关闭填充。它使用OAEP填充或PKCS#1 v1.5填充(它本来就不应该是布尔值,它应该是枚举值)。两种填充机制都部署(部分)随机化填充。只要你的随机源确实是随机的,输出就不会是确定性的。
当然,您可以创建自己的填充,例如使用Bouncy Castle的BlindedRSAEngine
,但如果删除随机填充,则会使RSA的安全性失效。只有当您完全理解其中的含义时,才能这样做,例如这里所示。
换句话说:不要去那里。