Rjindael 的密钥大小是not自由选择。它必须是 128 位、192 位或 256 位。它不能是 9 字节、18 字节或 36 字节。它必须严格为 16 字节、24 字节或 32 字节。
此外,您应该首先适当地指定您的密钥大小before你可以正确使用该类。虽然 128 位和 192 位密钥大小都是允许的,但您不能将密钥大小指定为 128 位,但使用 192 位密钥。您指定的密钥大小必须与您使用的密钥大小匹配。
这是您如何执行此操作的示例:
您可以指定密钥大小(不要与BlockSize
) 在里面RjindaelManaged.KeySize
财产:
RMCrypto.KeySize = 256;
然后 byte[] 中的密钥大小应与上面密钥的大小匹配:
byte[] key = new byte[]{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F };
RMCrypto.Key = key;
请务必使用看起来像随机噪声的密钥以获得一定的安全性。
目前您的密钥太短:
string password = @"myKey123";
byte[] key = UE.GetBytes(password);