【问题标题】:Python md5 password valuePython md5密码值
【发布时间】:2011-04-30 01:59:09
【问题描述】:

我有这个更改密码申请表。用户在其中输入他们的旧密码。

这个旧密码是 md5 格式。

如何将 db 中的 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" 

【问题讨论】:

    标签: python django


    【解决方案1】:

    不是 md5,是 sha1 - "sha1$xxx

    您必须改用 sha1 函数。 在http://docs.python.org/library/sha.html 有一个关于此的文档

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        md5$<salt>$<hash>
        

        如果您的哈希尚未加盐,请将 salt 留空 (md5$$&lt;hash&gt;),但在下次用户执行有效登录时将哈希更新为 sha1。

        【讨论】:

        • 你能给出一个相关的例子,按照你的解释将字符串 tom 转换为 md5
        • 加盐 (en.wikipedia.org/wiki/Salt_%28cryptography%29) 密码是为了防止对您的数据库的字典攻击。我将按照有关登录信号的问题 (stackoverflow.com/questions/1990502/…) 中的描述包装登录视图,并更新包装视图中的哈希值。所以你不会自己散列字符串'torn',但是如果user.is_authenticated() and user.password.startswith('md5$$'),你会从登录视图包装器中调用user.set_password('torn')
        • 这些天Django自动升级旧密码。
        【解决方案4】:

        要将您当前密码的值与存储在数据库中的密码进行比较,您可以:

        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'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-09
          • 1970-01-01
          • 2023-03-14
          • 2021-07-03
          • 2011-05-31
          • 1970-01-01
          相关资源
          最近更新 更多