我正在尝试从 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);
BigInteger
has a toByteArray()
重新添加前导 00 的方法:
byte[] serialNumBA = certificate.getSerialNumber().toByteArray()
现在您有多种方法将字节数组转换为十六进制字符串:
Java中如何将字节数组转换为十六进制字符串?
例如使用 Apache commons 编解码器:
String serialNum = Hex.encodeHexString(serialNumBA);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)