解码X509Certificate2的序列号?
问题描述:
对于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个八位字节”。
答
4F4B6C4CF95644EB850AB136B6ECE012
是序列号的大端十六进制表示(又名只是0x4F4B6C4CF95644EB850AB136B6ECE012
)。
使用类似http://www.mobilefish.com/services/big_number/big_number.php将该十六进制数转换为十进制数,我们得到105400630530142072027530130683799068690
。
请注意,在.NET中,GetSerialNumber()
返回little-endian,但SerialNumber
属性返回big-endian。