我已经生成了一个具有这种格式的序列号的证书 0eaa20f53cacdcaa40fbde51ab50c7d1
我也看过这种格式的证书。我想生成一个这样的。 10978342379280287625(0x985ae83a6b9e477f)
我该怎么做?差异是什么?
答案 0 :(得分:8)
X.509 Serial Number是一个整数,其值可以用20个字节表示("或者更少",因为区分编码规则(DER)说你省略了任何不必要的前导0x00字节(&#39) ;如果它从负数变为正数,或者数字为0,则必要。
10978342379280287625(0x985ae83a6b9e477f)
如果您访问进行大量转化的网站,例如http://www.mobilefish.com/services/big_number/big_number.php,您会看到
985ae83a6b9e477f (hex)
等于10978342379280287615 (decimal)
。
此编号的DER编码值为02 09 00 98 5a e8 3a 6b 9e 47 7f
0eaa20f53cacdcaa40fbde51ab50c7d1
此数字(DER 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会将其打印为十进制值,以方便用户使用。