c# - 指定的 key 不是该算法的有效大小

标签 c# encryption rijndaelmanaged

我有这段代码:

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/

相关文章:

c# - C++ DLL 和 C# 代码之间的共享内存

c# - 如何解决 Visual Studio 2013 中的 "project creation failed"InstallShield 问题?

c# - 在 BackgroundWorker 线程上创建 FlowDocument

aes - 如何将AES Rijndael生成的Key存储到数据库中?

使用 AES 的 C# 私有(private)/公共(public)加密

c# - MVC DropDownListFor 不从模型中选择值

Java AES/GCM 解密失败

ios - 如何在 ios,swift 中使用 RSA 公钥加密和解密字符串(纯文本)

c# - 使用 RSA 编码字符串

.net - 我什么时候会选择 AesCryptoServiceProvider 而不是 AesManaged 或 RijndaelManaged?