在Flickr API docs中,您需要查找字符串的MD5总和以生成[api_sig]
值。如何使用python获得MD5字符串的总和?
如何从字符串中生成MD5总和?
Flickr的例子:
字符串:000005fab4534d05api_key9a0554259914a86fb9e7eb014e4e5d52permswrite
MD5校验码:a02506b31c1cd46c2e0b6380fb94eb3d
在Flickr API docs中,您需要查找字符串的MD5总和以生成[api_sig]
值。如何使用python获得MD5字符串的总和?
如何从字符串中生成MD5总和?
Flickr的例子:
字符串:000005fab4534d05api_key9a0554259914a86fb9e7eb014e4e5d52permswrite
MD5校验码:a02506b31c1cd46c2e0b6380fb94eb3d
对于Python 2.x的官方文档,使用Python的hashlib
import hashlib
m = hashlib.md5()
m.update("000005fab4534d05api_key9a0554259914a86fb9e7eb014e4e5d52permswrite")
print m.hexdigest()
输出:a02506b31c1cd46c2e0b6380fb94eb3d
您是否尝试过使用hashlib的MD5实现?请注意,散列算法通常作用于二进制数据而非文本数据,所以您可能需要注意在散列之前使用哪种字符编码将文本转换为二进制数据。
结果散列也是二进制数据 - 它看起来像Flickr的例子已被转换成使用十六进制编码的文本。使用hashlib中的hexdigest
函数来获取它。
你可以做到以下几点:
的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.md5()。update('your string').hexdigest()',它不会工作,因为' update()'返回None。如果你想要一个线路解决方案,请使用Mark Longair的答案。 – 2011-11-16 18:39:13
@ChristopherManning m.hexdigest()返回32个字符长的摘要。如何获得16个字符的摘要? – Darwesh 2016-06-15 19:03:06
@Darwesh它是32个字符,因为它是十六进制表示,在这段代码的顶部做一个'm.digest_size',内部摘要已经是16个字节。 – 2016-09-20 16:59:39