检索x509证书的序列号时缺少前导零

时间:2016-12-08 04:26:38

标签: java x509 java-security

我正在尝试从X.509证书中获取序列号。当我将我的代码生成的序列号与实际序列号(在Windows上)进行比较时,实际序列号的前导零(X509的前导零)证书遗失。

使用前导零获取十六进制x.509证书序列号的任何建议或替代方法?

以下是我目前正在使用的代码段:

InputStream in = new FileInputStream("cert");
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
X509Certificate certificate = (X509Certificate) certificateFactory.generateCertificate(in);
String serialNum = certificate.getSerialNumber().toString(16);
System.out.println(serialNum);

1 个答案:

答案 0 :(得分:1)

BigIntegertoByteArray()方法重新添加前导00:

byte[] serialNumBA = certificate.getSerialNumber().toByteArray()

现在有几种方法可以将字节数组转换为十六进制字符串:

How to convert a byte array to a hex string in Java?

例如使用Apache commons编解码器:

String serialNum = Hex.encodeHexString(serialNumBA);