我有以下代码:

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.

这串怎么了?我可以列举一下您的一些例子吗?

最佳答案

base64解码时,字符串“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678912”产生48个字节(384位)。 RijndaelManaged支持128、192和256位 key 。

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

默认的块大小为128位,因此相同的字节数组将与IV一样工作。

关于c# - 指定的 key 对此算法无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2919228/

10-11 22:25
查看更多