прочитать файл pem, получить 63 байта в параметре DQ - PullRequest
1 голос
/ 11 июля 2011

У меня есть функция, которая требует шифрования / дешифрования RSA. С предоставленным файлом .pem, который содержит пару ключей для RSA. Используя Org.BouncyCastle так же, как и Как прочитать закрытый ключ PEM RSA из .NET ; или используя метод из http://www.jensign.com/opensslkey/opensslkey.cs. Полученные мной «неверные данные» с параметром DQ имеют 63 байта (отличается от 64 байтов). (Говорят, что файл .pem в порядке.) Есть ли здесь проблемы?

1 Ответ

2 голосов
/ 26 июля 2011

Все параметры RSA являются просто (огромными) числами. Большинство из них будут иметь одинаковые размеры (для одинаковой длины пары ключей, например, 1024), но это не всегда так - и вам необходимо это указать в своем коде.

Почему? потому что некоторые числа будут немного меньше и поместятся в меньшем количестве бит, чем другие. В вашем случае число умещается в 63 байта, так что это base64 (PEM), закодированный как таковой.

Решение состоит в том, чтобы заполнить данные, которые вы читаете, то есть добавить байт 0x00 перед тем, как 63 вы декодируете. Это будут те же цифры (по математике), и они пройдут все валидации .NET для параметров ключа RSA.

p.s. Вы можете посмотреть исходный код Mono, чтобы увидеть, как это обрабатывается.

...