2014-09-02 80 views
0

我得到了以下代碼,它將來自Web服務調用的MD5散列與本地存儲的密碼(要從數據庫中檢索)進行比較。 有沒有更好或更安全的方法來在python中進行MD5字符串相等性檢查?也許hashlib有一個函數可以接受兩個參數並返回true/false?Python是否可以在一次操作中檢查MD5字符串是否等於字符串?

md5 = request.values.get('md5') 

m = hashlib.md5() 
m.update("mypassword") 
md5Python = m.hexdigest() 

if md5Python == md5: 
    #return success 

#return fail 
+1

你爲什麼使用md5進行密碼散列?這是一個可怕的想法。 https://www.bentasker.co.uk/blog/security/201-why-you-should-be-asking-how-your-passwords-are-stored – dmcauslan 2014-09-02 22:43:29

+0

謝謝,我將修改安全要求 – 2014-09-03 14:08:02

回答

1

hashlib.md5構造函數採用可選的字符串,所以你不需要調用.update()

if md5 == hashlib.md5("mypassword").hexdigest(): 
1

而是從數據庫中檢索密碼來比較的 - 哈希密碼,您從用戶獲取並使你的用戶查詢哈希部分?

select uid from users WHERE username = '[email protected]' AND password = '<hash>'; 

這樣你永遠不會將真正的哈希密碼加載到應用程序中並可能暴露它。如果將整個用戶記錄加載到應用程序中,則會增加信息泄漏的可能性,並且會使整個密碼哈希點失效。

此外,使用AES-512或AES-256-md5已經不夠好了。

相關問題