[英]How do you reencode a python string via Packing and Unpacking using binascii?
我有一個哈希為標准md5哈希的文件
更正:OpenSSL哈希是十六進制表示形式。
MD5 Hash: 57ED2E029BF9CA39383D2A671EF4FB50
我有一個程序,要求字節編碼為base64 md5哈希。
MD5 BASE64 byte: 8se7isyX+S6Yei1Ah9AhsQ==
如何使用python'binascii'b2a方法將標准MD5哈希轉換為Base64?
以下是錯誤的。
import binascii
bin = binascii.a2b_uu('57ED2E029BF9CA39383D2A671EF4FB50')
base = binascii.b2a_base64(bin)
Output +> 'QUlZTlYUmikRYUjRXkQjWQkiiSkmkhZmVjhZkWTAAAAA\n'
TL; DR:
我需要接受十六進制字符串,將其轉換為二進制,然后將base64轉換為二進制.. python的方式是什么?
參考:
要實現的最重要的事情是,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
這是使用binascii
進行轉換的binascii
。 它需要兩次轉換,一次從十六進制轉換為二進制,另一次從二進制轉換為base64。
>>> hex_hash = '4bd2f7940a1ec86efe1d1178b4cb23b7'
>>> binascii.b2a_base64(binascii.a2b_hex(hex_hash))
'S9L3lAoeyG7+HRF4tMsjtw==\n'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.