Вопрос по java, x509, x509certificate, security, certificate – Серийный номер X509 с использованием Java

9

Мне нужно получить некоторые данные из сертификата X509.

Если я открываю файл сертификата в Windows, он показывает его серийный номер в этом формате.

ex. 39 65 70 eb d8 9f 28 20 4e c2 a0 6b 98 48 31 0d 

Те же данные я пытаюсь получить с помощью Java. После загрузки я использую

x509.getSerialNumber();
and result is : 76292708057987193002565060032465481997

Так в чем же разница между этими двумя? Я хочу результат как верхний.

Ваш Ответ

2   ответа
20

тогда как Java возвращаетBigInteger результат отX509Certificate.getSerialNumber().

Для отображенияBigInteger как шестнадцатеричное значение, просто вызовитеtoString(16).

BigInteger bi = new BigInteger("76292708057987193002565060032465481997");
System.out.println(bi.toString(16));

Будет выводить:

396570ebd89f28204ec2a06b9848310d
Я также конвертировал его в HEX, но моя ошибка заключалась в том, что он был записан в байтах. то есть"76292708057987193002565060032465481997".getBytes(); Таким образом, я получил это 3736323932373038303537393837313933303032353635303630303332343635343831393937. определенно Вы спасли меня @Duncan, я пытался в течение 3 часов ... Ravi A
2

Другой является десятичным.

Теперь все зависит от того, как вы конвертируете начальный сертификат в байтовый массив для его распечатки.

Допустим, это ваш сертификат:

byte[] cert = { (byte) 0xFD, (byte) 0xB1, (byte) 0xDD, ..., (byte) 0x00 };
BigInteger certVal = new BigInteger(cert);  
System.out.println("And result is  (hex): " + certVal.toString(16));

Похожие вопросы