[英]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.