提问者:小点点

用C#[关闭]写出AES键和IV


我试图有c#生成AES密钥和IV。但是我无法找到一种方法让它写出来的关键和四。

static void Main(string[] args)
    {
        using (var aes = Aes.Create())
        {
            aes.KeySize = 256;
            aes.BlockSize = 128;
            aes.Padding = PaddingMode.Zeros;
            aes.Mode = CipherMode.CBC;
            var iv = aes.GenerateIV();
            aes.GenerateKey();
            

        }

    }

当我向generate方法分配一个变量时,它会给出一个错误,即不能将void分配给隐式类型变量。当我可以将它转换为一个字节数组时,它显示不能隐式地将类型void转换为byte。


共2个答案

匿名用户

您需要访问Aes类的KeyIV属性以获取Key和IV的值。

通过执行创建Aes对象时。创建,将具有可用的IV和Key值。您只需要通过密钥和IV属性检索它们。

KeyIV属性的类型为byte[],因此您需要将它们转换为字符串,以便能够以文本格式查看。

考虑以下代码。

using (var aes = Aes.Create())
{
    aes.KeySize = 256;
    aes.BlockSize = 128;
    aes.Padding = PaddingMode.Zeros;
    aes.Mode = CipherMode.CBC;
    aes.GenerateIV();
    aes.GenerateKey();
    
    var key = Convert.ToBase64String(aes.Key);
    var iv = Convert.ToBase64String(aes.IV);
     
    Console.WriteLine(key); 
    Console.WriteLine(iv);
}

匿名用户

您必须使用Aes类型而不是var,我认为这应该可以解决问题。