簡體   English   中英

如何使用binascii通過打包和解包來重新編碼python字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM