2014-09-02 51 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已经不够好了。

相关问题