.NET RSA.ImportRSAPrivateKey: проблемы с импортом закрытого ключаC#

Место общения программистов C#
Anonymous
.NET RSA.ImportRSAPrivateKey: проблемы с импортом закрытого ключа

Сообщение Anonymous »

Я пытаюсь использовать RSA для подписи и проверки своих токенов Jwt в моем веб-API ASP.NET.
В настоящее время я не могу импортировать свой закрытый ключ в модуль RSA, все, что я пробовал, приводит к CryptographicException различных сообщений, особенно поврежденных данных ASN1.
Фрагмент кода моего ошибочного кода:

Код: Выделить всё

// Setup RSA for asymetric token encryption
var rsa = RSA.Create();
var privateKey = Convert.FromBase64String(_configuration["JWT:PrivateKey"]!);
rsa.ImportRSAPrivateKey(privateKey, out _);
Моя конфигурация следующая (поделившись этим закрытым ключом, я знаю, что не буду использовать его повторно):

Код: Выделить всё

"Jwt": {
"PrivateKey": "/+Qt4JZDyewAslVLo+vYXpVUqB7rseDEOORsWrTIxsemO2ekxOxiQClW38qyXHtRT29bzEA6EEWdvDfQC9lIaN9KKI3pNplP7CI/HtQ78h0oTldakr2aeSQ38gEU5bnLpd4x2XMNNGGZE8IWn+fsUvOJf9jSDtFXUnb4n8SkTm4iBZCMI/fLxktJ4W/NEEPt3lahyxxK9EpT80Ekr56Rp0atqfqOfJFUV0SgLMytB5/xnUv7p1hAgOe2fnDqmKXlxqdUM3JfFVrwuzHks7WAPRVfaFH0g6k6VE6E+Xru0lwEsK6uHGYTPYirX77SHFphqNg6GBDI35+7AquRaZFttAgMBAAECggEATd//1JXcpljaObu7ffJsSSxTD3FCVTHuqHfm8ryAm6Mx/TaNv+BatvfSTQQfGlCxznDkUgal9NJAlM7iuR7mMGeLu2jn8L7z22ZeOSPMOAnDtY03nOfgZ354M4FvU3xoFihebRd1TH2E4xt1BK7GOWPkKwxrwi+yD8WLwZU1VhOyDwIo1h5fSXyg2aDBCX3Jje1oMWYmOYgZO/+SulwMY7zzAEWJHckyP8VmD5YX+kofq7+3LQeOQ9oZfjXHfV867qQtEHYPe6FMVYIQI8mf10TTXmtd6dlH022p0Wzt1c8FMq8kHSzOAwzs7rKBkYcMEGEMwVG69ZCFXo4lHe+dewKBgQDwCPuipoRYNX7EujSMCG2J2Gp9DOlM2xWr9orB8CLGD8K0P3EWkhFUQqAdrwWoT7WXTW1Xv3YJRv/UWrihnv/Gz8RwMIN2yl8jBwoYtXOiwHoBP9ib2qBEYaZVQuJX/S6rvhcT2d0qh9/UaVY8vJVNrgE6oR6RImz0S2M2fGR5VwKBgQDMvbfGupm22obrILV6MNJVVCqTf1eXmQYG0ktgOc1OZoZwWJlmBTfw39QfwugVZQGR5KNyiL/ujMRH4bCqmtX6RpSN0Bf6Ouwe10OZyV7KZl2AEF0vPu45AwLI3mwZWg/63Ax3oJffZDgyaZQRchK7bX2PuEoTHvhi5F5Ob2Ui2wKBgQDRT0P+ZS3qrVtJuQWxRngeR7U0LloSRsjzFx2QWBI6m+uwudGnWN/7lc2BlOleB4PV2BKM/cuz81GKn0F4zelEOFCXc/ZvU7D6Hl1Thoa7WRQKmt4Lqe0vM+eTWat+Bqz33d7J1KTjPXCVDPXCKMAY6K7xrSW2cUqJDGQLUxVaKQKBgCaCnNmlaZpKOkxpp5jnK/jezu9VaX1bTBXmYkUkOijAAhOJprjYzG/jOfwLZin4CLaPYer+K9PL6HN40QkV/J+JvRF7jbcEdDtM1CtOBCVf4cBf05c6aAaTOWfc5kpSdWUDFNk/fLGJIUTiNPafFUTp0E9DI7O7BI9dUxu/ui83AoGBALUooM7ntGuOMZmyBxpEedQBhdGMMHShXBIi8z3c/G5Y1wpGzJBIm+6nyHOf6Q8SfptdP9J06+BjwUDJoumHdtpRzHqraOMgecayV2bod5AH/aC27e2HS9f39+nKW3DWU0ggnI9udEr58jJYdIPDAdI+xOlOvo3qxM/kZSk56egb"
}
Я сгенерировал сертификат RSA, используя openssl, создав PKCS#1, выведя его в pem-файл и скопировав все, кроме верхнего и нижнего колонтитула, открыв файл в блокноте.

Код: Выделить всё

openssl genrsa
В документах MS отмечено, что id необходимо декодировать содержимое pem с помощью Base64, что я и сделал.

Если значение закодировано в Base64 или находится в текстовом формате PEM, вызывающая сторона должна декодировать содержимое с помощью Base64 перед вызовом этого метода.

Любые идеи о том, что я должен делать неправильно, пожалуйста, дайте мне знать.

Подробнее: https://stackoverflow.com/questions/799 ... rivate-key

Вернуться в «C#»