2017-02-07 1 views
1

я генерируется сертификат, который имеет серийный номер в таком формате 0eaa20f53cacdcaa40fbde51ab50c7d1В чем разница для формата серийного номера сертификата x.509 в скобках, а не в скобках.

Я также видел сертификат с этим форматом. Я бы хотел создать такой вариант. 10978342379280287625 (0x985ae83a6b9e477f)

Как я могу это сделать? Какая разница?

+0

Серийный номер представляет собой [двоичное целое число ASN.1 до 20 октетов] (https://www.ietf.org/rfc/rfc3280.txt), но не в любом из этих форматов. Вы смотрите только на различные способы * печати * этого. – EJP

ответ

6

X.509 Serial Number - это целое число, значение которого может быть представлено в 20 байтах («или меньше»), так как выдающиеся правила кодирования (DER) говорят, что вы опускаете ненужные ведущие 0x00 байт (это необходимо, если оно изменяется с отрицательного на положительное число или, если это число 0).

10978342379280287625 (0x985ae83a6b9e477f)

Если вы зайдете на сайт, который делает большие преобразования чисел, таких как http://www.mobilefish.com/services/big_number/big_number.php вы увидите, что 985ae83a6b9e477f (hex) равно 10978342379280287615 (decimal).

МЭД кодированного значения этого числа 02 09 00 98 5a e8 3a 6b 9e 47 7f

0eaa20f53cacdcaa40fbde51ab50c7d1

Это число (МЭД 02 10 0e aa 20 f5 3c ac dc aa 40 fb de 51 ab 50 c7 d1) эквивалентен десятичное значение 19492550873724953657229484824238016465.

Предполагая, что одно и то же программное обеспечение отображает обе визуализации, такие как OpenSSL, разница в том, отображается ли она как десятичной, так и шестнадцатеричной, вероятно, связана с длиной серийного номера. Для OpenSSL отсечка 8 Содержание (не 0x00) байт: https://github.com/openssl/openssl/blob/c4a60150914fc260c3fc2854e13372c870bdde76/crypto/x509/t_x509.c#L88

Поскольку 0x985ae83a6b9e477f вписывается в unsigned long, OpenSSL выводит его в виде десятичного значения для удобства пользователя.

Смежные вопросы