How do you reencode a python string via Packing and Unpacking using binascii?

坚强是说给别人听的谎言 提交于 2019-12-13 02:23:31

问题


I have a file hashed to a standard md5 Hash

Correction: OpenSSL Hashes are HEXDECIMAL representations.

MD5 Hash:   57ED2E029BF9CA39383D2A671EF4FB50

I have a program that requires a byte encoding base64 md5 hash.

MD5 BASE64 byte: 8se7isyX+S6Yei1Ah9AhsQ==

How do you use pythons 'binascii' b2a methods to convert the standard MD5 hash to a Base64?

The below is wrong.

import binascii 
bin = binascii.a2b_uu('57ED2E029BF9CA39383D2A671EF4FB50')
base = binascii.b2a_base64(bin) 

Output +> 'QUlZTlYUmikRYUjRXkQjWQkiiSkmkhZmVjhZkWTAAAAA\n'

TL;DR:

I need to take hexstring, convert it to binary, and then base64 the binary.. what's the python way?

Reference:

  • MD5 Hash and Base64 encoding
  • https://docs.python.org/2/library/binascii.html

回答1:


Here's how you can do the conversion with binascii. It requires two conversions, one from hex to binary and another from binary to base64.

>>> hex_hash = '4bd2f7940a1ec86efe1d1178b4cb23b7'
>>> binascii.b2a_base64(binascii.a2b_hex(hex_hash))
'S9L3lAoeyG7+HRF4tMsjtw==\n'



回答2:


The most important thing to realize was that the openssl md5 hash is calculated the same way as the hashlib.md5(..).hexdigest() method

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 


来源:https://stackoverflow.com/questions/27383761/how-do-you-reencode-a-python-string-via-packing-and-unpacking-using-binascii

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!