我试图有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。
您需要访问Aes
类的Key
和IV
属性以获取Key和IV的值。
通过执行创建Aes对象时。创建
,将具有可用的IV和Key值。您只需要通过密钥和IV属性检索它们。
Key
和IV
属性的类型为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,我认为这应该可以解决问题。