Python 3创建md5哈希

时间:2018-04-21 16:44:12

标签: python-3.x md5 decode

我必须解码以下数据:

b'E\x00\x00 <\xed\x00\x00>\x01\x15\xe2\xac\x140f\xa1C\xacP\x00\x00\xf8V\x00\x07\x00\x07\x00\x01\x07\x9a'

成一个可理解的字符串。为此,我们被告知使用hashlib和md5。但我不知道如何使用它来消除此信息。

我尝试过这样的事情:

message.hashlib().md5().decode()

但我没有得到任何结果

2 个答案:

答案 0 :(得分:1)

你不能从这里到达那里。哈希是对数据进行小规模重构,几乎会破坏数据中的所有信息。它用于标识数据的修订版,稍后可用于查看数据是否已更改。即使数据中有1个字符的变化,良好的散列算法也会显着改变其输出。在gutenberg.org上考虑一个仲夏夜之梦。它大约有100,000个字符,其md5哈希值是16个字节。你不会从那里得到原来的回复!

>>> import hashlib
>>> import requests
>>> night = requests.get("http://www.gutenberg.org/ebooks/1514.txt.utf-8")
>>> len(night.text)
112127

>>> print(night.text[20000:20200])
h power to say, Behold!
The jaws of darkness do devour it up:
So quick bright things come to confusion.

HERMIA
If then true lovers have ever cross'd,
It stands as an edict in destiny:
Then let
>>> print(night.text[20000:20300])
h power to say, Behold!
The jaws of darkness do devour it up:
So quick bright things come to confusion.

HERMIA
If then true lovers have ever cross'd,
It stands as an edict in destiny:
Then let us teach our trial patience,
Because it is a customary cross;
As due to love as thoughts, and dre

>>> hash = hashlib.md5(night.text.encode("utf-8")).hexdigest()
>>> print(hash)
cce0d35b8b2c4dafcbde3deb983fec0a

哈希对于查看文本是否已更改非常有用:

>>> hash2 = hashlib.md5(requests.get("http://www.gutenberg.org/ebooks/1514.txt.utf-8").text.encode("utf-8")).hexdigest()
>>> hash == hash2
True

答案 1 :(得分:0)

我建议您阅读hashlib的官方文档 Documentation

简单的例子:

import hashlib

text = 'Some text 2'

m = hashlib.md5()
m.update(b"Some text") # OR
m.update(text.encode('UTF-8'))
print(m.hexdigest())