2024-06-01 13:25:23 发布
网友
我正在创建一个小系统,用户可以用用户名和密码登录。然后,代码将检查同一行中包含用户名和密码的文本文件
我不知道该怎么做。为什么创建一个简单的基于文本文件的登录系统会如此复杂?我相信这是我的哲学是错误的,而不是实际的代码
我使用了以下各种代码:
with open('users/users.txt') as f: {int(k): v for line in f for (k, v) in (line.strip().split(None, 1),)}
这些都没有用。我做错什么了
我假设你有一个文本文件的布局如下:
username1 password1 username2 password2 ...
根据我从您的问题中收集的信息,您希望解析此文件并将结果存储在字典中(即用户名键映射到密码值)。这类内容更适合存储在数据库中(例如,SQLite内置于Python中),因此您应该明确了解数据库,而不是使用纯文本文件存储数据,尤其是用户帐户
此外,您应该考虑如何使用散列等技术存储敏感信息,如密码,但这是您在进行下一步时可以考虑的问题(我假设这是一个小型学习项目,因此数据库和散列等概念可能超出您当前的范围,但它们绝对值得学习)
至于你的问题,你可以考虑做如下事情:
accounts = dict() with open('users.txt') as f: for account in f: (usr, pwd) = account.strip().split() accounts[usr] = pwd print(accounts)
我认为代码的清晰性比把所有内容都放在一行更重要!我展示的代码并不详尽,更像是一个指南。正如我之前所说,我不建议你走这条路,所以一定要研究数据库和正确的密码存储技术
同时,为了确保某种形式的安全性,您可以将密码存储为散列(即pwd将是散列)。然后,当用户将密码传递给系统时,可以计算哈希值并检查哈希值是否相等。这比处理纯文本密码要好。Python有一个内置的哈希模块hashlib。我不是散列方面的专家,但这将是一个不错的起点
我假设你有一个文本文件的布局如下:
根据我从您的问题中收集的信息,您希望解析此文件并将结果存储在字典中(即用户名键映射到密码值)。这类内容更适合存储在数据库中(例如,SQLite内置于Python中),因此您应该明确了解数据库,而不是使用纯文本文件存储数据,尤其是用户帐户
此外,您应该考虑如何使用散列等技术存储敏感信息,如密码,但这是您在进行下一步时可以考虑的问题(我假设这是一个小型学习项目,因此数据库和散列等概念可能超出您当前的范围,但它们绝对值得学习)
至于你的问题,你可以考虑做如下事情:
我认为代码的清晰性比把所有内容都放在一行更重要!我展示的代码并不详尽,更像是一个指南。正如我之前所说,我不建议你走这条路,所以一定要研究数据库和正确的密码存储技术
同时,为了确保某种形式的安全性,您可以将密码存储为散列(即pwd将是散列)。然后,当用户将密码传递给系统时,可以计算哈希值并检查哈希值是否相等。这比处理纯文本密码要好。Python有一个内置的哈希模块hashlib。我不是散列方面的专家,但这将是一个不错的起点
相关问题 更多 >
编程相关推荐