json - 无法从 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 字符
解决方案
通过删除反斜杠过滤器解决了阅读问题,但是我现在遇到了密码比较问题,因为在另一个程序中,我将两个哈希都放入变量中并验证了它们。这个程序拒绝这样做。
推荐阅读
- python - 在 Django 中序列化关系
- android - 如何使用jetpack compose将按钮标记为可选
- android - 由于在应用程序安装期间超时而无法运行排毒测试
- hibernate - 休眠查询:通过映射键加入
- android - 以预定的时间间隔在本机反应中调用休息 API
- java - 用于逐步添加字符串填充的循环?
- c# - CS0122:“AmazonGlacierClient.ListVaults()”因其保护级别而无法访问
- swift - 将 SwiftUI 2.0 应用程序连接到 Firebase 时出错
- hash - 具有自适应哈希函数的哈希表
- kubernetes - 你能解决 Kubernetes 中的 1 个 pod/node/container 1 负载均衡器吗?