對於應用程序原型,我創建了一個簡單的用戶登錄。然後使用sha224散列用戶的密碼並將其傳輸到後端。我現在面臨的問題是以下。存儲在數據庫中的密碼(使用sha224進行散列處理)看起來與我發送的散列表有點不同。我使用下面的代碼來創建哈希。android sha224和python之間的區別sha224
定密碼==測試
的Python
from hashlib import sha224
sha224("test").hexdigest()
安卓
MessageDigest sha224 = MessageDigest.getInstance("SHA-224");
sha224.update(key.getBytes());
byte[] digest = sha224.digest();
StringBuffer buffer = new StringBuffer();
for(int i = 0; i < digest.length; i++) {
buffer.append(String.valueOf(Integer.toHexString(0xFF & digest[i])));
}
return buffer.toString();
現在什麼會產生這個樣子的,我會發布兩個散列的正下方彼此。 (第一個是Python和第二機器人)
90a3ed9e32b2aaf4c61c410eb925426119e1a9dc53d4286ade99a809 90a3ed9e32b2aaf4c61c41eb925426119e1a9dc53d4286ade99a89
他們幾乎是相同的,但蟒蛇哈希有兩個0以上。你們有什麼想法,爲什麼?
有趣的是,並非所有零都被丟棄,即第一個數字是90.那裏發生了什麼? – whatnick 2010-11-15 13:33:29
好吧0號在奇數位置被丟棄我會寫一個更好的解釋。 – whatnick 2010-11-15 13:35:04
@whatnick:刪除其他零將改變該值。只有前導零不會改變實際值。 – 2010-11-15 13:35:55