使用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个八位字节”。
答案 0 :(得分:0)
4F4B6C4CF95644EB850AB136B6ECE012
是序列号的大端十六进制表示(也就是它只是0x4F4B6C4CF95644EB850AB136B6ECE012
)。
使用http://www.mobilefish.com/services/big_number/big_number.php之类的内容将十六进制数转换为十进制数,我们得到105400630530142072027530130683799068690
。
请注意,在.NET GetSerialNumber()
中返回little-endian,但SerialNumber
属性将返回big-endian。