c#调用具有正确字节数组的函数

时间:2015-01-22 14:10:33

标签: c# arrays encryption rijndael

我有这个功能,我需要调用加密我的字节数组。 该函数需要字节数组加密,字节数组作为密码,另一个字节数组作为初始化向量。 功能本身:

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)的字节数组的正确版本?

1 个答案:

答案 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()

只需存放钥匙。