【问题标题】:Python- Reading back usernames and passwords into a program to authenticatePython-将用户名和密码读回程序以进行身份​​验证
【发布时间】:2018-06-13 14:46:32
【问题描述】:

我目前正在用 Python 编写一个程序,询问您是否登录。如果没有,他们会继续创建用户名和密码。如果是,他们登录并对照文本文件检查他们的详细信息。文本文件如下所示(用户名然后密码):

whitehallj27
EXpass%20
Username2
EXPASSWORD%%%
james_27
password1234

我试图找出一种尽可能简单的编程方法。它似乎有效,但并不像我想象的那么简单,也没有真正发挥作用。这是代码sn-p:

logins={}
usernames_passwords=open("UsernamesAndPasswords.txt","r")
count=0
for line in usernames_passwords:
    count=count+1
count=count/2    
usernames_passwords.close()
usernames_passwords=open("UsernamesAndPasswords.txt","r")

try:
    for x in range(count):
        username=usernames_passwords.readline()
        password=usernames_passwords.readline()
        logins[username]=password
except TypeError:
    count=int(count+0.5)
    for x in range(count):
        username=usernames_passwords.readline()
        password=usernames_passwords.readline()
        logins[username]=password

usernames_passwords.close()
print(logins)

另外,我将如何验证用户名和密码以检查其正确性。

非常感谢, 詹姆斯·达克斯伯里

【问题讨论】:

  • 我真的希望这是一些家庭作业,因为这样存储密码是一个非常、非常、非常糟糕的主意
  • 正如 CBredlow 所提到的,密码从不以明文形式存储。即使存储密码的未加盐哈希也充满危险,但这是一个很好的起点。
  • 我的意思是,如果您选择这样做,为什么不将它们作为某种字典/元组存储在文本文件中并读入。
  • 并没有像我想象的那样真正发挥作用请解释你想要它做什么,以及它正在做什么。不要只是告诉我们“它不起作用”。

标签: python file dictionary io simplify


【解决方案1】:

假设变量userpasswd有用户提供的用户名和密码,那么就分两行读取文件:

file_contents = []
with open("UsernamesAndPasswords.txt","r") as f:  #use "with", it will auotamtically close the file
    file_contents = f.readlines()
usernames = file_contents[0::2]  #step by 2, take all elements starting at index 0
passwords = file_contents[1::2]  #step by 2, take all elements starting at index 1
found_at_index = -1
for i in range(0,len(usernames)):
    if user == usernames[i] and passwd == passwrods[i]:
        found_at_index = i
        break
if found_at_index >= 0 :
     #do whatever you want, there is match
else:
     #I don't know what you wanted to do in this case

请阅读 with 关键字和 this 以了解如何很好地读取文件。

还有this 关于[::] 语法。

【讨论】:

    【解决方案2】:

    你可以用这样的用户名和密码创建一个字典:

    dict = {
        'user-name': 'password-hashing',
        'another-user': 'another-password'
    }
    

    完成后,您可以将此 dict 保存在 json 文件中,并在用户要求登录时加载其内容。

    使用 python 处理 json 文件的文档:https://docs.python.org/3/library/json.html

    obs.:它看起来会更简单,但它不是做这个王者的最佳方式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 2021-12-14
      • 2016-11-09
      • 2018-12-19
      • 1970-01-01
      相关资源
      最近更新 更多