C# 指定的初始化向量(IV)与此算法的块大小不匹配(Microsoft示例)

C# 指定的初始化向量(IV)与此算法的块大小不匹配(Microsoft示例),c#,encryption,cryptography,rijndaelmanaged,C#,Encryption,Cryptography,Rijndaelmanaged,我从中复制了代码,并更改了一些不重要的内容,现在出现以下错误: 指定的初始化向量(IV)与的块大小不匹配 该算法 (我只添加了加密流) 为什么在微软的文章中他们加密密钥和iv if然后抛出匹配大小的异常?加密此密钥和iv的目的是什么,如何使用此密钥和iv加密?密钥和iv是rm.key和rm.iv。在rm.CreateEncryptor()中使用加密密钥和加密IV没有意义。另外,加密IV也没有意义,因为它没有提供任何安全好处,但成本很高。我不知道为什么在microsoft文章中它没有在micros

我从中复制了代码,并更改了一些不重要的内容,现在出现以下错误:

指定的初始化向量(IV)与的块大小不匹配 该算法

(我只添加了
加密流


为什么在微软的文章中他们加密密钥和iv if然后抛出匹配大小的异常?加密此密钥和iv的目的是什么,如何使用此密钥和iv加密?

密钥和iv是
rm.key
rm.iv
。在
rm.CreateEncryptor()中使用加密密钥和加密IV没有意义。另外,加密IV也没有意义,因为它没有提供任何安全好处,但成本很高。我不知道为什么在microsoft文章中它没有在microsoft文章中//加密对称密钥和IV.encryptedSymmetricKey=rsa.Encrypt(rm.key,false);encryptedSymmetricIV=rsa.Encrypt(rm.IV,false);是的,非对称加密的最后两行代码密钥和IV是
rm.Key
rm.IV
。在
rm.CreateEncryptor()中使用加密密钥和加密IV没有意义。另外,加密IV也没有意义,因为它没有提供任何安全好处,但成本很高。我不知道为什么在microsoft文章中它没有在microsoft文章中//加密对称密钥和IV.encryptedSymmetricKey=rsa.Encrypt(rm.key,false);encryptedSymmetricIV=rsa.Encrypt(rm.IV,false);是的,这是非对称加密的最后两行代码
byte[] publicKey = {214,46,220,83,160,73,40,39,201,155,19,202,3,11,191,178,56,
            74,90,36,248,103,18,144,170,163,145,87,54,61,34,220,222,
            207,137,149,173,14,92,120,206,222,158,28,40,24,30,16,175,
            108,128,35,230,118,40,121,113,125,216,130,11,24,90,48,194,
            240,105,44,76,34,57,249,228,125,80,38,9,136,29,117,207,139,
            168,181,85,137,126,10,126,242,120,247,121,8,100,12,201,171,
            38,226,193,180,190,117,177,87,143,242,213,11,44,180,113,93,
            106,99,179,68,175,211,164,116,64,148,226,254,172,147};

byte[] exponent = { 1, 0, 1 };

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
MemoryStream ms = new MemoryStream();
RijndaelManaged rm = new RijndaelManaged();

RSAParameters rsaKeyInfo = new RSAParameters
{
    Modulus = publicKey,
    Exponent = exponent
};

rsa.ImportParameters(rsaKeyInfo);

byte[] encryptedSymmetricKey = rsa.Encrypt(rm.Key, false);
byte[] encryptedSymmetricIV = rsa.Encrypt(rm.IV, false);

CryptoStream cryptoStream = new CryptoStream(ms, rm.CreateEncryptor(encryptedSymmetricKey, encryptedSymmetricIV), CryptoStreamMode.Write);