Python md5密码值

2024-10-04 11:32:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张更改密码申请表,用户可以在里面输入他们的旧密码。

这个旧密码是md5格式。

如何将数据库中的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" 

Tags: 用户import数据库密码newdb格式password
3条回答

我不认为oldpasswd_db是MD5。它更像是散列方法(本例中是SHA1)、salt和密码散列本身的组合。

尝试将salt值与密码连接起来:

import hashlib
hashlib.sha1('c60datom').hexdigest()

不是md5,是sha1-"sha1$xxx

你得用sha1函数来代替。 在http://docs.python.org/library/sha.html有关于这个的文档

你放在那里的散列是一个咸sha1 hexdigest,因为django(可能还有很多其他人)默认存储它。

验证它的代码在contrib/auth/models.py中。从这里可以看到,默认情况下django与md5一起工作。您只需将旧哈希更新为以下格式:

md5$<salt>$<hash>

如果您的散列还没有被salt,那么将salt保留为空(md5$$<hash>),但是在用户下次执行有效登录时将散列更新为sha1。

相关问题 更多 >