2016-12-08 14 views
0

Я пытаюсь получить серийный номер из сертификата X.509. Когда я сравниваю серийный номер, сгенерированный моим кодом, с фактическим серийным номером (на окнах) отсутствуют нулевые значения фактического серийного номера (сертификата X509).Отсутствие ведущих нулей при получении серийного номера сертификата 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); 
+0

Почему вы думаете, что должны быть листы нулей? Можете ли вы показать серийный номер сертификата ASN? – Crypt32

+0

Фактический серийный номер выглядит как 00 a6 XX XX XX XX XX XX XX. но серийный номер, сгенерированный вышеуказанным исходным кодом, выглядит как a6 XX XX XX XX XX XX XX .. отсутствует ведущий 00. – jAnA

+0

Серийный номер определяется как INTEGER ASN.1. Ведущие нули несущественны. – EJP

ответ

1

BigInteger имеет toByteArray() метод, который повторно добавляет ведущие 00S:

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

Теперь у вас есть несколько способов преобразования массив байтов в шестнадцатеричную строку:

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

Например, с кодеком Apache:

String serialNum = Hex.encodeHexString(serialNumBA); 
+0

На самом деле это не _preserve_ 00s; он повторно добавляет одиночный 00 iff, необходимый для знака, который (к счастью) является тем же самым правилом, которое использует ASN.1 DER. –

+0

@ dave_thompson_085 Да, ты прав. – Omikron

+0

Спасибо .., когда я прочитал серийный номер самоподписанного сертификата с помощью openssl, он не показывает ведущее 00. но когда я читаю серийный номер в окнах, он показывает ведущую оо в серийном номере. Могу ли я знать, почему? – jAnA

 Смежные вопросы

  • Нет связанных вопросов^_^