我有散列成一个标准的MD5哈希文件
更正:OpenSSL的hash是HEXDECIMAL表示。
MD5 Hash: 57ED2E029BF9CA39383D2A671EF4FB50
我有一个需要字节的base64编码MD5哈希值的程序。
MD5 BASE64 byte: 8se7isyX+S6Yei1Ah9AhsQ==
如何使用蟒蛇“binascii” B2A方法标准MD5哈希转换为Base64编码?
以下是错误的。
import binascii
bin = binascii.a2b_uu('57ED2E029BF9CA39383D2A671EF4FB50')
base = binascii.b2a_base64(bin)
Output +> 'QUlZTlYUmikRYUjRXkQjWQkiiSkmkhZmVjhZkWTAAAAA\n'
TL; DR:
我需要的十六进制串值,将其转换为二进制,然后BASE64二进制..什么Python是这样?
参考:
- MD5哈希和Base64编码
- https://docs.python.org/2/library/binascii.html
这里是你如何能做到与转换binascii
。 它需要两个转换,一个从十六进制到二进制和另一名来自二进制Base64。
>>> hex_hash = '4bd2f7940a1ec86efe1d1178b4cb23b7'
>>> binascii.b2a_base64(binascii.a2b_hex(hex_hash))
'S9L3lAoeyG7+HRF4tMsjtw==\n'
要认识到的最重要的事情是,OpenSSL的MD5哈希值的计算方法为hashlib.md5(..)相同。hexdigest()方法
import base64
import hashlib
hex_hash = hashlib.md5(open("putty_upx.exe").read()).hexdigest()
>> '4bd2f7940a1ec86efe1d1178b4cb23b7'
hex_hash.decode("hex")
>> 'K\xd2\xf7\x94\n\x1e\xc8n\xfe\x1d\x11x\xb4\xcb#\xb7'
b64_md5_hash = base64.b64encode(hex_hash.decode("hex"))
>> 'S9L3lAoeyG7+HRF4tMsjtw=='
len(b64_md5_hash)
>> 24
文章来源: How do you reencode a python string via Packing and Unpacking using binascii?