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

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

任何建议或替代方法来获取hex的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); 

BigInteger有一个toByteArray()方法重新添加前导00:

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

现在您有几种方法可以将字节数组转换为hex字符串:

如何在Java中将字节数组转换为hex字符串?

例如,使用Apache commons编解码器:

 String serialNum = Hex.encodeHexString(serialNumBA);