在Python中计算Hex的MD5

时间:2014-02-22 14:53:24

标签: python encryption hash md5

我总是因解密RC4加密对象而失败。我的密钥必须是这个十六进制字符串的MD5-Hash:

00 00 00 01 3e 2a 5b 71 00 00 03 a0

我尝试的是将该十六进制字符串转换为ascii,然后计算它的MD5哈希,但似乎我的密钥总是错误的。我认为有一个问题,因为一些十六进制值是控制字符,但是如何计算这个十六进制字符串的MD5的正确方法呢?我的想法是这样的:

from Crypto.Cipher import ARC4
from Crypto.Hash import MD5


def hexToAscii(hex_string):
    return ''.join([chr(int(''.join(c), 16)) for c in zip(hex_string[0::2],hex_string[1::2])])

def main():
    hex_string = '000000013e2a5b71000003a0'

    # Key for Decryption
    myKey = MD5.new(hexToAscii(hex_string)).hexdigest()

    print 'hexToAscii(hex_string): %s' % hexToAscii(hex_string)

    #open('myfile','wb').write(ARC4.new(hexToAscii(myKey)).decrypt(hexToAscii(CIPHER_TEXT)))

if __name__ == '__main__':
    main()

2 个答案:

答案 0 :(得分:2)

main功能打印hexToAscii(hex_string)而不是myKey

顺便说一句,你最好使用binascii.unhexlify代替hexToAscii。您可以使用hashlib module来计算md5。

>>> import hashlib
>>> import binascii
>>> hex_string = '000000013e2a5b71000003a0'
>>> hashlib.md5(binascii.unhexlify(hex_string)).hexdigest()
'6afebf522c531575e96d6814be816c7c'

答案 1 :(得分:0)

使用Python标准库中的hashlibbinascii,不涉及转换为ASCII:

import binascii
import hashlib

base = binascii.unhexlify("000000013e2a5b71000003a0")
key = hashlib.md5(base).digest()