Как явно удалить ключ AES, сгенерированный в. NET, используя AESManaged? - PullRequest
4 голосов
/ 12 февраля 2020

Я экспериментирую с генерацией и удалением ключей 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(), но в этом контексте это не сработало).

1 Ответ

2 голосов
/ 12 февраля 2020

Вы бы использовали aes.Clear();

Надеюсь, это поможет вам:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...