我有这段代码:
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.
这个字符串有什么问题?我可以从您那里算出一些示例字符串吗?
最佳答案
字符串“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678912”在 base64 解码后产生 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==")
。
默认 block 大小为 128 位,因此相同的字节数组将用作 IV。
关于c# - 指定的 key 不是该算法的有效大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2919228/