解码X509Certificate2的序列号?

时间:2017-08-25 21:14:27

标签: c# x509certificate x509 x509certificate2

使用X509Certificate格式的“自签名证书”样本,我正在查看证书的序列号。

我无法弄清楚正在使用什么'编码类型'或'转换类型',或者它是如何使用的。序列号是

证书原始输出中的

4f:4b:6c:4c:f9:56:44:eb:85:0a:b1:36:b6:ec:e0:12

C#X509Certificate2原始输出中的

4F4B6C4CF95644EB850AB136B6ECE012

转换为序列号的纯文本时,这两个值中的任何一个都是

105400630530142072027530130683799068690

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

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

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

[编辑] - 刚刚学会了它是“ASN.1二进制整数,最多20个八位字节”。

1 个答案:

答案 0 :(得分:0)

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

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

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