在 C# 中写出 AES 密钥和 IV

Write out AES key and IV in C#

我正在尝试让 C# 生成 AES 密钥和 IV。但是我找不到办法让它写出密钥和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();
            

        }

    }

当我将 var 分配给 generate 方法时,出现无法将 void 分配给隐式类型变量的错误。 当我可以将其转换为字节数组时,它显示无法将类型 void 隐式转换为字节。

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

通过 Aes.Create 创建的 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;
    
    var key = Convert.ToBase64String(aes.Key);
    var iv = Convert.ToBase64String(aes.IV);
     
    Console.WriteLine(key); 
    Console.WriteLine(iv);
}