我有这个更改密码请求form.In,用户可以输入他们的旧密码。
此旧密码为md5格式。
如何将db中的oldpassword值与用户输入的md5进行比较
import md5
oldpasswd_byuser=str("tom")
oldpasswd_db="sha1$c60da$1835a9c3ccb1cc436ccaa577679b5d0321234c6f"
opw= md5.new(oldpasswd_byuser)
#opw= md5.new(oldpasswd_byuser).hexdigest()
if(opw == oldpasswd_db):
print "same password"
else:
print "Invalid password" 发布于 2010-10-25 15:49:33
您放在其中的散列是一个加盐的sha1十六进制摘要,因为django (可能还有许多其他的)默认情况下会存储它。
验证它的代码在contrib/auth/models.py中。从那里您可以看到,django默认情况下与md5一起工作。您所要做的就是将旧的散列更新为以下形式:
md5$<salt>$<hash>如果您的散列尚未加盐,则将盐保留为空(md5$$<hash>),但在用户下次执行有效登录时将散列更新为sha1。
发布于 2010-10-25 15:40:44
我不认为oldpasswd_db是MD5。它看起来更像是散列方法(本例中为SHA1)、salt和密码散列本身的组合。
尝试将Salt值与密码连接起来:
import hashlib
hashlib.sha1('c60datom').hexdigest()发布于 2010-10-25 15:38:24
不是md5,是sha1 - "sha1$xxx。
你必须使用sha1函数来代替。在http://docs.python.org/library/sha.html上有一篇关于这方面的文档
https://stackoverflow.com/questions/4012616
复制相似问题