繁体   English   中英

Python md5密码值

[英]Python md5 password value

我有这个更改密码请求表单。用户输入他们的旧密码。

这个oldpassword是md5格式。

如何将db中的md5值与用户输入的oldpassword进行比较

 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" 

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

验证它的代码在contrib / auth / models.py中 从那里你可以看到django默认使用md5。 您所要做的就是将旧哈希更新为以下格式:

md5$<salt>$<hash>

如果您的哈希值没有被加盐,但将盐留空( md5$$<hash> ),但在下次用户执行有效登录时将哈希值更新为sha1。

我认为oldpasswd_db不是MD5。 它看起来更像哈希方法(在本例中为SHA1),salt和密码哈希本身的组合。

尝试将salt值与密码连接:

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

它不是md5,它是sha1 - "sha1$xxx

你必须使用sha1函数。 http://docs.python.org/library/sha.html上有关于此的文档

要比较当前密码的值与数据库中存储的密码,您可以执行以下操作:

import md5

input_password = request.POST['password']
md5_hashed_input_password = md5.new(input_password).hexdigest()
#comapre the value to that stored in db
if md5_hashed_input_password == db_password:  #password in db should be stored in md5 hash format
    print 'password match'
else:
    print 'password mismatch'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM