我目前有以下代码。
我正在byte array
从硬编码的随机生成一个string
。
现在我注意到在设置Rijndael
类时,应用程序在设置键值时崩溃。关于设置键值时为什么会崩溃的任何建议。
int olength = 18;
string HKey = "ABCDEFGHIJKL111100002222"; //Some random string
byte[] key = Convert.FromBase64String(HardcodedKey); //key.length = 18
byte[] iv = Encryption.GenerateRandomBytes(olength);
CryptoStream cs = Encryption.AES128Stream(key, iv, Context.Response.Body);
现在上面的方法被调用如下
public static CryptoStream AES128Stream(byte[] key, byte[] iv, Stream stream)
{
try
{
Rijndael rijndael = Rijndael.Create();
rijndael.Mode = CipherMode.CBC;
rijndael.Padding = PaddingMode.PKCS7;
rijndael.KeySize = 128;
rijndael.BlockSize = 128;
rijndael.Key = key; ///---->CRASHES HERE
rijndael.IV = iv;
ICryptoTransform rijndaelEncryptor = rijndael.CreateEncryptor();
return new CryptoStream(stream, rijndaelEncryptor, CryptoStreamMode.Write);
}
catch (Exception e)
{
throw e;
}
}
在附加信息中指出
附加信息:指定的密钥不是此算法的有效大小。
在那种情况下,我可以使用什么字符串才能工作?为什么这个字符串不起作用?