2011-03-14 52 views

回答

179

对于Python 2.x的官方文档,使用Python的hashlib

import hashlib 
m = hashlib.md5() 
m.update("000005fab4534d05api_key9a0554259914a86fb9e7eb014e4e5d52permswrite") 
print m.hexdigest() 

输出:a02506b31c1cd46c2e0b6380fb94eb3d

+51

不要尝试使用'hashlib.md5()。update('your string').hexdigest()',它不会工作,因为' update()'返回None。如果你想要一个线路解决方案,请使用Mark Longair的答案。 – 2011-11-16 18:39:13

+0

@ChristopherManning m.hexdigest()返回32个字符长的摘要。如何获得16个字符的摘要? – Darwesh 2016-06-15 19:03:06

+0

@Darwesh它是32个字符,因为它是十六进制表示,在这段代码的顶部做一个'm.digest_size',内部摘要已经是16个字节。 – 2016-09-20 16:59:39

7

您是否尝试过使用hashlib的MD5实现?请注意,散列算法通常作用于二进制数据而非文本数据,所以您可能需要注意在散列之前使用哪种字符编码将文本转换为二进制数据。

结果散列也是二进制数据 - 它看起来像Flickr的例子已被转换成使用十六进制编码的文本。使用hashlib中的hexdigest函数来获取它。

+0

你可能指的是'hexdigest'功能,而不是'hexdigit' – Ikke 2011-03-14 10:46:37

+0

@Ikke :哎呀:)谢谢,修正... – 2011-03-14 10:47:55

+0

hexdigest()返回32个字符长的摘要。如何获得16个字符的摘要? – Darwesh 2016-06-15 19:03:54

349

你可以做到以下几点:

的Python 2.x的

import hashlib 
print hashlib.md5("whatever your string is").hexdigest() 

Python 3.x都有

import hashlib 
print(hashlib.md5("whatever your string is".encode('utf-8')).hexdigest()) 

然而,在这种情况下,你可能会更好过使用这种有益的Python模块与Flickr的API交互:

...这将解决你的身份验证。

hashlib

+0

我看到了API。无论如何,我只是好奇我怎么能做到这一点。谢谢! – super9 2011-03-14 10:50:11

+0

hexdigest()返回长度为32个字符的摘要。如何获得16个字符的摘要? – Darwesh 2016-06-15 19:03:40

+0

好的答案!请问为什么在Python 2中我们不需要执行utf-8编码,但是在Python 3中我们需要执行编码。谢谢。 @Mark Longair – 2017-11-20 05:04:04

相关问题