Импортировать зашифрованный ключ 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