2011-03-14 48 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

相關問題