我有以下代码:
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/