如何使用冒号符号打印指纹(sha256字节)?

2024-10-04 03:19:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个x509证书指纹,它基本上只是一个SHA256字节的字符串

这些通常以43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8的形式表示

有没有更合适的方法从像b'CQC\xa1\xb5\xfc\x8b\xb7\n:\xa9\xb1\x0ffs\xa8'这样的字节字符串生成它们

binascii.hexlify(b'CQC\xa1\xb5\xfc\x8b\xb7\n:\xa9\xb1\x0ffs\xa8')让我走到了一半(b'435143a1b5fc8bb70a3aa9b10f6673a8'),但我没有任何冒号


Tags: 字符串字节证书指纹x509cqcx8bxb1
2条回答
no_colon = b'CQC\xa1\xb5\xfc\x8b\xb7\n:\xa9\xb1\x0ffs\xa8'.hex()
colon = ':'.join(no_colon[i:i+2] for i in range(0, len(no_colon), 2))

基本上,我使用.hex()从本质上“删除”字符串中的b''并将其转换为十六进制

然后,':'.join(no_colon[i:i+2] for i in range(0, len(no_colon), 2))在每两个字母后添加一个冒号。我想这就是你想要的。但是,只有在每个冒号之间始终有2个字符时,这才有效

这包括所有产出:

43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8
hashbytes = b'CQC\xa1\xb5\xfc\x8b\xb7\n:\xa9\xb1\x0ffs\xa8'
print(":".join([format(i,'02x') for i in hashbytes]))

43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8

可能有一种更短的方法,可能是在hexdigest()字符串输出上使用format()方法

相关问题 更多 >