检索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);