2010-10-25 48 views
2

在python中,如何將SHA256散列分割爲32位前綴?我正在使用Google的safebrowsing api,它要求我比較我自己的集合和API發送給我的集合之間的32位前綴。我知道如何從Google列表中提取列表,並且我理解如何從解析的URL形成哈希集合,但是,我不明白我是如何得出每個哈希的前32位的。在python中將256位散列分割爲32位前綴

在獲得前綴之後,將它們置於具有相應鍵/值對的字典中作爲前綴/完整散列之間的最佳操作過程,以便稍後可以引用它們?

回答

3

32位是前4個字節。所以你可以切分字節數組。

hash_obj.digest()[:4] 

你可以把它作爲字典鍵。

編輯

我不知道,如果你需要的十六進制表示,這將是。

hash_obj.hexdigest()[:8] 
+0

工作就像一個魅力,謝謝。是指示比特或字節數的切片?我怎麼能說出不同? IE爲什麼是十六進制:8? – Stev0 2010-10-27 03:17:44

+0

@ Stev0,帶有ASCII文本,需要1個字節(8位)來存儲一個字符,所以前4個字符爲32位(4 * 8)。我使用術語字符鬆散,取決於python版本它可能實際上是一個字節數組。在十六進制表示法中,每個字符代表4位,因此爲了表示一個字節,您需要2個字符,因此您需要前8個字符。要清楚的是,十六進制版本是前32位的人類友好代表,非十六進制形式是前32位。 http://en.wikipedia.org/wiki/Hexadecimal – mikerobi 2010-10-27 03:30:48