指定的密钥对于此algorithm不是有效的大小

我有这个代码:

RijndaelManaged rijndaelCipher = new RijndaelManaged(); // Set key and IV rijndaelCipher.Key = Convert.FromBase64String("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678912"); rijndaelCipher.IV = Convert.FromBase64String("1234567890123456789012345678901234567890123456789012345678901234"); 

我得到了投掷:

 Specified key is not a valid size for this algorithm. Specified initialization vector (IV) does not match the block size for this algorithm. 

这个string有什么问题? 我可以从你的一些例子string?

当base64解码时,string“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678912”产生48个字节(384位)。 RijndaelManaged支持128位,192位和256位密钥。

有效的128位密钥是new byte[]{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }或者如果您需要获取它从base64: Convert.FromBase64String("AAECAwQFBgcICQoLDA0ODw==")

默认块大小是128位,所以相同的字节数组将会像IV一样工作。

使用随机数生成器类(RNGCryptoServiceProvider),用随机字节填充指定的缓冲区,如下所示:

 var numberOfBits = 256; // or 192 or 128, however using a larger bit size renders the encrypted data harder to decipher var ivBytes = new byte[numberOfBits / 8]; // 8 bits per byte new RNGCryptoServiceProvider().GetBytes(ivBytes); var rijndaelManagedCipher = new RijndaelManaged(); //Don't forget to set the explicitly set the block size for the IV if you're not using the default of 128 rijndaelManagedCipher.BlockSize = 256; rijndaelManagedCipher.IV = ivBytes; 

请注意,可以使用相同的过程来派生密钥。 希望这可以帮助。

RijndaelManagedalgorithm支持密钥长度为128,192或256位。 你的关键之一是这些尺寸?

我不知道rijndaelCipher.Key的长度,如果它是24,那么rijndaelCipher.Key = s.SubString(0,24);

太简单。