我是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);
    }
.

使用上面的代码,我得到了一个不同的加密字符串,同一intput,随时我重新启动应用程序。我想知道这是否是一种正常行为,如果不是,如何防止它。

例如,程序返回输入“Hello”的下面的字符串:

NopDAF5FRu....
.

当我重新启动应用程序时,相同输入的输出将是:

pPPu8x6....
. 但是,当我为我的RSA加密类创建新对象时,所有对象都会返回相同的输出。

有帮助吗?

解决方案

这完全正常和精细。加密的数据将放入块的块内,该块与随机值填充。那是与 public 键加密。

看这个如此q&a 更多详细信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top