Как получить размер ключа данного CSR в битах? - PullRequest
1 голос
/ 03 февраля 2011

Я пишу программу на .net (c #), используя Liping Share ASN1 Editor , который очень хорошо декодирует данные CSR.
Итак, моя проблема: Как мне получитьразмер бита данного CSR?(Я хочу проверить, является ли он 1024 или выше)
Я уже пробовал класс .net X509Certificate, но он работает только с сертификатами, а не с CSR.
Нет возможности использовать класс Java или проанализироватьвеб-сайт, который содержит CSR-декодер.(хотя я уже думал, что это было бы намного проще, чем решить проблему в противном случае)

Может быть, решение очень простое, и я просто не понимаю, но если кто-то может дать мне совет, я был бы очень признателенЭто!(слишком много Google за последние два дня !!)

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Я не знаком с c #, но знаю, что с PHP сначала нужно получить открытый ключ CSR от CSR, а затем проверить размер ключа в открытом ключе.

openssl_pkey_get_details(openssl_csr_get_public_key($your_csr));

Возвращаемое значение - массивинформации открытого ключа, включая размер в битах.

ПРИМЕЧАНИЕ: Я обнаружил из тестирования и обширных исследований, что метод, упомянутый JSmitty, не является надежным.

0 голосов
/ 09 марта 2011

Кажется, все довольно просто: достаточно взглянуть на первые несколько символов самого CSR. Если он начинается с MIIC, он 512-битный, MIID 1024-битный. Вот более простое представление:

Beginning    Number of
Characters  bits in CSR
----------  -----------
MIIC        512-bits
MIID        1024-bits
MIIE        2048-bits
MIIG        4096-bits
MIIK        8192-bits
MIIS        16384-bits

Я не получил подтверждения (с точки зрения спецификационного документа), что это на 100% надежно, но, похоже, это верно, подтверждается проведенным на примере исследованием, которое я провел (обнаружил на нескольких сайты и из моего личного опыта создания CSR с различным количеством битов).

...