2017-08-25 110 views
0

对于X509Certificate格式的示例“自签名证书”,我正在查看证书的序列号。解码X509Certificate2的序列号?

我找不出什么'编码类型'或'转换类型'正在使用,或如何使用它。该序列号是

在证书原始输出4f:4b:6c:4c:f9:56:44:eb:85:0a:b1:36:b6:ec:e0:12

4F4B6C4CF95644EB850AB136B6ECE012在C#X509Certificate2原始输出

那些2个值的任,当转换为序列号的纯文本是

105400630530142072027530130683799068690

我以为我只需要c将十六进制值转换为ASCII文本,但它给了我这个。

OKlL?VD??\n?6???\u0012

所以这是不是。什么解码方法在这里产生正确的序列号?

[已编辑] - 刚学会它现在是“ASN.1二进制整数高达20个八位字节”。

回答

0

4F4B6C4CF95644EB850AB136B6ECE012是序列号的大端十六进制表示(又名只是0x4F4B6C4CF95644EB850AB136B6ECE012)。

使用类似http://www.mobilefish.com/services/big_number/big_number.php将该十六进制数转换为十进制数,我们得到105400630530142072027530130683799068690

请注意,在.NET中,GetSerialNumber()返回little-endian,但SerialNumber属性返回big-endian。