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