我正在尝试使用Pythons OpenSSL库获取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

为什么序列号的一半转换为零?

最佳答案

'%x' % cert.get_serial_number()
'%x' %格式类似于'{0:x}'.format(cert.get_serial_number())的字符串

关于python - X.509证书序列号到十六进制转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39286805/

10-13 05:20