【发布时间】:2020-02-12 01:41:30
【问题描述】:
我正在尝试在.NET 中生成和删除 AES 密钥。这只是一个自学练习,不会部署到任何地方。下面的代码使用AESManaged生成一个AES密钥
using System;
using System.Security.Cryptography;
using System.Text;
namespace genkeys
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("generating keys with .NET");
AesManaged aes = new AesManaged();
aes.GenerateKey();
aes.GenerateIV();
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
Console.ReadLine();
// how to delete the generated key here?
}
}
}
理论上,我了解正确的密钥卫生要求我们在完成后立即从 RAM 中删除密钥。在C++ 中,对CryptDestroyKey (https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptdestroykey) 的显式调用允许我们擦除密钥。 .NET 中是否有等效电话。换句话说,如何删除上面代码中生成的密钥? (我试过cngkey.Delete(),但在这种情况下不起作用)。
【问题讨论】:
标签: c# .net encryption cryptography