Подписание C # RSA без кодировки ASN.1 - PullRequest
0 голосов
/ 04 июля 2018

Прежде всего, мне нужно повторить функциональность echo -n "someUnhashedData" | openssl pkeyutl -sign -inkey rsa.key | base64 -w 0 в коде C #. Мне удалось загрузить закрытый ключ в System.Security.Cryptography.RSACryptoServiceProvider и вызвать SignData, но результат, который я получаю, отличается от результата openssl pkeyutl.

Насколько я понимаю, в этот пост и этот RFC при вызове pkeyutl -sign без -pkeyopt digest:hashFunc openssl не связывает данные с идентификатором функции дайджеста и пропускает ASN. 1 кодировка Это означает, что необработанные данные дополняются и шифруются. Этот инструмент , кажется, подтверждает, что расшифрованная подпись выглядит как данные в виде открытого текста.

Так как мне это сделать с C #? Все функции из RSACryptoServiceProvider требуют указания алгоритма хеширования и кодирования подписи перед шифрованием. Я что-то упускаю или мне придется написать собственное частное шифрование RSA?

1 Ответ

0 голосов
/ 05 июля 2018

.NET не имеет входящего API для выполнения «сырого RSA». Если вам нужна такая возможность для сопоставления с существующей ошибкой в ​​другом потребителе RSA, вам нужно создать новый класс, который P / вызывает вниз для системных криптографических библиотек (или иным образом обеспечивает нужную вам функциональность)

...