Импортировать зашифрованный ключ PKCS#8 в RSACng?

Если я зашифровал ключ RSA в PKCS#8, могу ли я как-то импортировать его в RSACng как CngKeyBlobFormat.Pkcs8PrivateBlob? Или это CngKeyBlobFormat.Pkcs8PrivateBlob просто показывает CngKey что во время импорта ключ должен быть декодирован из DER, чтобы получить ключевые параметры, а затем они импортируются в RSACngТаким образом, ответ нет?

1 ответ

Решение

CNG понимает, как расшифровать зашифрованный PKCS#8, но вам нужно дать ему пароль. Так как.NET не запрашивает у вас пароль (и он передается другим способом, кроме свойств), нет хорошего способа сделать это.

Ваши варианты довольно много:

  • P / Invoke, чтобы вы могли указать значение NCRYPTBUFFER_PKCS_SECRET.
  • Измените ваш процесс так, чтобы у вас был незашифрованный PKCS#8.
  • Измените процесс так, чтобы вместо зашифрованного PKCS # 8 у вас был PFX/PKCS#12 (а затем перейдите к чтению через X509Certificate2).
  • Ожидайте будущую версию.NET Core, которая будет иметь возможность загружать PKCS#8, зашифрованный PKCS # 8 и некоторые другие форматы непосредственно в объекты RSA/DSA/ECDsa/ECDiffieHellman (функция в настоящее время находится в ведущем устройстве). ветка).
  • Найдите библиотеку, которая может расшифровать ее для вас. Надувной замок, вероятно, может сделать это.

Смотрите также: Цифровая подпись в C# без использования Bouncy Castle

Другие вопросы по тегам