2016-11-03 161 views
0

我想將我的密碼(b'¥_ÆMÐ1;2±*öªÝ=')的哈希值與用戶鍵入的哈希值進行比較,結果爲(str)(hashlib.md5(pw.encode('utf-8')).hexdigest())。當我打印他們出來不同b'¥_ÆMÐ1;2±*öªÝ=',另一個b'\xa5\x83_\xc6\x85M\xd01;2\xb1*\xf6\xaa\xdd='。出於這個原因,我無法比較這兩個字符串。我正在尋找一種功能,可以邏輯地將b'\xa5\x83_\xc6\x85M\xd01;2\xb1*\xf6\xaa\xdd='轉換爲b'¥_ÆMÐ1;2±*öªÝ='(每個轉義碼轉換爲其Unicode編碼)。提前致謝。順便說一句,散列是「lenny」的散列,如果這有幫助。 Here是我的代碼的鏈接。這是我的輸出:比較Python哈希

Welcome to The Vault  
Type your username: 
lenny (input not relevant) 
b'¥_ÆMÐ1;2±*öªÝ=' 
b"b'\\xa5\\x83_\\xc6\\x85M\\xd01;2\\xb1*\\xf6\\xaa\\xdd='"
+3

請正確格式的問題。 – BernardoGO

+0

'b'¥_¬ÂÂÂÂÂÂÂÂÂ''''不是合法的'bytes'對象。顯示時,'bytes'對象對所有打印的ASCII都使用'\ x'轉義。你有什麼看起來像一個'str'的​​一些可怕的轉換,看起來像'字節',但不是。 – ShadowRanger

+0

有些東西似乎是錯誤的......如果你將''_'MM1; 2±*öªÝ=''編碼爲'utf-8',就會得到'b'\ xc2 \ xa5_ \ xc3 \ x86M \ xc3 \ x901; 2 \ xc2 \ xb1 * \ xc3 \ xb6 \ xc2 \ xaa \ xc3 \ x9d =''這與b不一樣\ xa5 \ x83_ \ xc6 \ x85M \ xd01; 2 \ xb1 * \ xf6 \ xaa \ xdd =' ' – danidee

回答

0

使用.digest()而不是.hexdigest(),如果你想從上下文散列的原始字節。

編輯,從引擎收錄14行應該是:

if hashlib.md5(lol.encode('utf-8')).digest() == b'\xa5\x83_\xc6\x85M\xd01;2\xb1*\xf6\xaa\xdd=': 
+0

作爲一個附註,最好不要使用md5(或任何單一的散列函數)爲任何重要的密碼存儲。改用pbkdf2這樣的密鑰派生函數。 – KingRadical

+0

你能給我你改變的路線嗎? –

+0

這只是一個瞭解哈希密碼的項目,所以MD5沒問題。謝謝你的信息? –