C# 使用AES的相同加密文本必须导致不同的长度

C# 使用AES的相同加密文本必须导致不同的长度,c#,aes,C#,Aes,我使用以下示例代码: AESCryptor是我自己的类,带有上面msdn链接中的原始代码。它只包装解密/加密方法,而不是更多。 这就是我如何调用解密/加密方法的: string plainText1 = "This is my sample plain text"; string plainText2 = "This is my sample plain text"; // Create a new instance of the AesManaged // class. This gene

我使用以下示例代码:

AESCryptor是我自己的类,带有上面msdn链接中的原始代码。它只包装解密/加密方法,而不是更多。

这就是我如何调用解密/加密方法的:

string plainText1 = "This is my sample plain text";
string plainText2 = "This is my sample plain text";

// Create a new instance of the AesManaged
// class.  This generates a new key and initialization 
// vector (IV).
using (AesManaged myAes = new AesManaged())
{
    // Encrypt the string to an array of bytes.
    byte[] encrypted = AESCryptor.EncryptStringToBytes_Aes(plainText1, myAes.Key, myAes.IV);

    byte[] encrypted2 = AESCryptor.EncryptStringToBytes_Aes(plainText2, myAes.Key, myAes.IV);

}
我期望的结果是(加密的和encrypted2)字节数组的长度当然相同,但会被“零”填充,因此当我用Base64编码字节[]时,会得到不同的字符串


我该怎么做?设置
myAes.Padding=PaddingMode.zero没有帮助。

为了获得相同密钥和明文的不同结果,您需要使用不同的IV

从外观上看,要使用单个
AesManaged
实例执行此操作,需要在两次加密调用之间调用
myAes.GenerateIV()

如果您创建了一个新的
AES
,您将免费获得一把新钥匙和一个新的IV,这也可能实现您想要的功能


不要忘记记录密钥和IVs,因为没有它们,您将无法解密邮件。

忘记我的Base64评论。我只是想知道如何为相同的纯文本获取具有不同内容的2字节数组。什么是AESCryptor
?据我所知那不是一门标准课。。。请制作一个简短但完整的程序来演示这个问题。这只是我的课程,它的实现来自microsoft示例,而不是更多。如果你看msdn样本,你就有我的课了。我无法重现这个问题。我复制并粘贴了您的代码和MSDN代码,并查看了
加密
加密2
,它们是相等的。请展示一个简短但完整的程序来演示问题。@Elisabeth请包括您的课程。这样我们才能确定。我的蜘蛛感觉说这就是答案。代码中总是“绝对没有任何区别”。@Rawling是的,这是我必须解决的问题。