首页 > 解决方案 > 无法从 json 文件中读取哈希

问题描述

这是我在游戏中创建和登录帐户的代码的一部分,我已经取消了从用户那里获取用户名和密码的操作,只保留了密码哈希和文件读/写

##CREATE ACCOUNT##
    
    #Encrypt password
    newPswdEnc = hashlib.sha512()
    newPswd = bytes(newPswd, "ascii")
    newPswdEnc.update(newPswd)
    newPswdEnc = str(newPswdEnc.digest()).replace("\\", ".")
    
    #Assemble and place in file       
    newLogin = {"Username":newUsnm,"Pswd":newPswdEnc,"Highscore":0}
    
    with open("Users.json", "r+") as file:
         data = json.load(file)
    
         ##DOES SOME EXTRA VALIDATION TO PREVENT DUPLICATE USERNAMES##
    
         data["Logins"].append(newLogin)
         
    with open("Users.json", "w+") as file:
         json.dump(data. file, indent = 5)
    
##LOGIN##
    
    #Encrypt password
    pswdEnc = hashlib.sha512()
    pswd = bytes(pswd, "ascii")
    pswdEnc.update(pswd)
    pswdEnc = str(pswdEnc.digest()).replace("\\", ".")
    
    #CHECK USERNAME AND PASSWORD
    with open("Users.json", "r") as file:
         data = json.load(file)
    
    for i in range(0, len(data["Logins"])):
         if data["Logins"][i]["Username"] == usnm and data["Logins"][i]["Pswd"] == pswd:
              loggedIn = True

##Logins.json##
{
     "Logins": [
          {
               "Username": "ADMIN",
               "Pswd": b'#.x8b.x90.xe6.xe28-.xda.xfa.xdc5&k/.xa9.xa3q.xfb9b.xb6u.xcc.xab.x1bU82.x1fF.x90p.xd0.xf3v/).xb2.x1a.xc7.xadw..xb6.xbd).x9d.t.xf8.xe7]8.xed.x8bpg.x96]]_&.xeb.xc3.xf5',
               "Highscore": 0
          }
     ],
}

尝试使用正确的密码登录时出现此错误:预期值:第 5 行第 24 列(字符 90),这似乎是散列开头的 b 字符

标签: jsonpython-3.xpython-3.8sha512

解决方案


通过删除反斜杠过滤器解决了阅读问题,但是我现在遇到了密码比较问题,因为在另一个程序中,我将两个哈希都放入变量中并验证了它们。这个程序拒绝这样做。


推荐阅读