用java X509序列号(X509 serial number using java)

2019-07-31 21:57发布

我需要从X509证书的一些数据。

如果我打开窗户,证书文件,其表示在这种格式的序列号。

ex. 39 65 70 eb d8 9f 28 20 4e c2 a0 6b 98 48 31 0d 

同样的数据,我想获得使用Java。 得到它加载后,我用

x509.getSerialNumber();
and result is : 76292708057987193002565060032465481997

那么究竟是什么这两个之间的区别? 我想要的结果作为上一个。

Answer 1:

Windows显示该序列号的十六进制表示,而Java返回BigInteger结果从X509Certificate.getSerialNumber()

要显示BigInteger为十六进制值,只需要调用toString(16)

BigInteger bi = new BigInteger("76292708057987193002565060032465481997");
System.out.println(bi.toString(16));

将输出:

396570ebd89f28204ec2a06b9848310d


Answer 2:

第一个是在证书的十六进制值。 另一种是小数。

现在,它取决于你如何转换初始证书的ByteArray打印出来。

比方说,这是你的证书:

byte[] cert = { (byte) 0xFD, (byte) 0xB1, (byte) 0xDD, ..., (byte) 0x00 };
BigInteger certVal = new BigInteger(cert);  
System.out.println("And result is  (hex): " + certVal.toString(16));


文章来源: X509 serial number using java