Я экспериментирую с генерацией и удалением ключей AES в .NET
. Это просто упражнение для самообучения, которое нигде не будет развернуто. Следующий код генерирует ключ AES, используя AESManaged
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?
}
}
}
Теоретически, я понимаю, что надлежащая гигиена ключей требует, чтобы мы сразу же удаляли ключи из оперативной памяти после того, как мы закончили. В C++
явный вызов CryptDestroyKey
(https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptdestroykey) позволяет нам стереть ключи. Есть ли эквивалентный вызов в .NET
. Другими словами, как мне удалить сгенерированный ключ в приведенном выше коде? (Я пытался cngkey.Delete()
, но в этом контексте это не сработало).