我有这个功能,我需要调用加密我的字节数组。 该函数需要字节数组加密,字节数组作为密码,另一个字节数组作为初始化向量。 功能本身:
public static byte[] Encrypt(byte[] clearData, byte[] Key, byte[] IV)
{
MemoryStream ms = new MemoryStream();
Rijndael alg = Rijndael.Create();
alg.Key = Key;
alg.IV = IV;
CryptoStream cs = new CryptoStream(ms,
alg.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(clearData, 0, clearData.Length);
cs.Close();
byte[] encryptedData = ms.ToArray();
return encryptedData;
}
听起来可能很奇怪,但我没有正确使用此功能。我的问题是使用正确的字节数组作为密码/ IV。 我尝试使用:
Encrypt(read, new byte[] { 0x49, 0x49, 0x49, 0x49, 0x4, 0x4, 0x4, 0x4 }, new byte[] { 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61 });
我只是不知道如何调用此函数。什么是调用此函数(密码和IV)的字节数组的正确版本?
答案 0 :(得分:4)
您可以使用
生成密钥RijndaelManaged myRijndael = new RijndaelManaged();
myRijndael.GenerateKey();
myRijndael.GenerateIV();
然后将它们存储在某处保存以使用它们来加密和解密您的消息
byte[] key = myRijindael.Key
byte[] iv = myRijindael.Iv
编辑: 刚刚注意到你使用的是Rijindael Class而不是RijindaelManaged。在msdn Example他们说"创建Rijndael类的新实例。这将生成一个新的密钥和初始化向量(IV)。"
所以在你创建一次实例后
Rijndael myRijndael = Rijndael.Create()
只需存放钥匙。