如何使用冒号表示法打印指纹(sha256 字节)?
How do I print a fingerprint (sha256 bytes) using colon notation?
我有一个 x509 证书指纹,它基本上只是一个 SHA 256 字节字符串。
这些通常以 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'
),但我没有任何冒号。
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个字母后加一个冒号。我想这就是你想要的。但是,这仅在每个冒号之间始终有 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()
方法。
我有一个 x509 证书指纹,它基本上只是一个 SHA 256 字节字符串。
这些通常以 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'
),但我没有任何冒号。
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个字母后加一个冒号。我想这就是你想要的。但是,这仅在每个冒号之间始终有 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()
方法。