2016-09-02 2 views
3

Я пытаюсь получить серийный номер для сертификата X.509 с использованием библиотеки OpenSSL Pythons.X.509 серийный номер сертификата к шестнадцатеричному преобразованию

Если я загружаю мой серт так:

x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_ASN1, cert) 

Затем распечатайте серийный номер, как это:

print x509.get_serial_number() 

Это выглядит следующим образом:

5.283978953499081e+37 

Если преобразовать его для этого:

'{0:x}'.format(int(5.283978953499081e+37)) 

возвращает это:

27c092c344a6c2000000000000000000 

Однако, используя OpenSSL из командной строки для печати сертификатов серийный номер возвращает это.

27:c0:92:c3:44:a6:c2:35:29:8f:d9:a2:fb:16:f9:b7 

Почему половина серийного номера преобразуется в нули?

+0

Вы уверены, что сертификат кодируются с ASN1? Какую версию OpenSSL вы используете? –

+0

Попробуйте ''% x '% cert.get_serial_number() '. Должен помочь. – atn

+0

Большое спасибо - Ну, это исправить. Что действительно означает «% x»%? – user1513388

ответ

1
'%x' % cert.get_serial_number() 

'%x' % форматов строка, как '{0:x}'.format(cert.get_serial_number())

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