【发布时间】:2013-11-16 15:31:15
【问题描述】:
我是 RSA 加密的新手,我一直在尝试使用 .Net 的 System.Security.Cryptography 了解它的工作原理。
public String Encryption(Byte[] Input, RSAParameters PublicKey)
{
RSAC = new RSACryptoServiceProvider();
RSAC.ImportParameters(PublicKey);
Byte[] Encrypt = RSAC.Encrypt(Input, false);
return Convert.ToBase64String(Encrypt);
}
使用上面的代码,每当我重新启动应用程序时,我都会为相同的输入获得不同的加密字符串。我想知道这是否是正常行为,如果不是,如何预防。
例如,程序为输入“Hello”返回以下字符串:
NopDAF5FRu....
当我重新启动应用程序时,相同输入的输出将是:
pPPu8x6....
但是,当我为我的 RSA 加密类创建新对象时,所有对象都返回相同的输出。
【问题讨论】:
-
您能否展示您如何测试问题的最后一部分:“但是,当我为我的 RSA 加密类创建新对象时,所有对象都返回相同的输出。”
-
随机的 RSA 很好。将
false作为第二个参数传递给Encrypt可能不太好,因为与 OAEP 相比,v1.5 填充有一些严重的弱点。
标签: c# encryption cryptography rsa system.security