C# 如何使用AES管理显式删除.NET中生成的AES密钥?
我正在试验在C# 如何使用AES管理显式删除.NET中生成的AES密钥?,c#,.net,encryption,cryptography,C#,.net,Encryption,Cryptography,我正在试验在.NET中生成和删除AES密钥。这只是一个自学练习,不会部署到任何地方。以下代码使用AES管理生成AES密钥 using System; using System.Security.Cryptography; using System.Text; namespace genkeys { class Program { static void Main(string[] args) { Console.Write
.NET
中生成和删除AES密钥。这只是一个自学练习,不会部署到任何地方。以下代码使用AES管理生成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++
中,显式调用cryptdowerkey
()允许我们擦除密钥。.NET
中是否有等效调用。换句话说,如何删除上面代码中生成的密钥?(我尝试了cngkey.Delete()
,但在这种情况下不起作用)。您将使用aes.Clear()代码>
我希望这对您有所帮助:)谢谢。我试过了,但在一次aes.Clear
之后,钥匙似乎仍然留在内存中!好吧,否则,从我对C#中AES的理解来看,你不能。我会再研究一些,几分钟后再给你回复。你可以将AES
设置为null
,然后向其中吐出一些随机值,然后调用GC.Collect()
AesManaged
是IDisposable
,使用
是否应清除该键?()