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
使用
是否应清除该键?()