在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