存储用户名和密码,然后允许用户更新。蟒

时间:2017-09-17 19:14:11

标签: python text-files username

我正在尝试创建一个程序,询问用户,在这个例子中,让我们说一个用户名和密码,然后存储它(我假设在一个文本文件中)。我正在努力的领域是如何允许用户更新存储在文本文件中的密码?我是用Python写的。

4 个答案:

答案 0 :(得分:0)

因为您已经要求关注如何处理文本文件中的更新,所以我专注于您的问题的这一部分。因此,实际上我专注于回答当这些更改影响文本文件的长度和结构时,如何在文本文件中进行更改。该问题与文本文件中的密码无关。 您是否应该存储密码,或者是否应存储一些可用于验证密码的数量,这些都是一个重要的问题。所有这些都取决于您尝试做什么,您的安全模型是什么,以及您的程序需要与之交互的其他内容。通过要求我们专注于问题的文本文件更新部分,您已经排除了所有超出问题范围的内容。

您可以采用以下模式来完成此任务:

  • 一开始查看文本文件是否存在。阅读它,如果是这样,假设您正在进行更新而不是新用户

  • 询问用户名和密码。如果是具有旧值的更新提示并允许更改

  • 写出文本文件。

更新存储在文本文件中的内容的大多数策略都涉及在每次更新时完全重写文本文件。

答案 1 :(得分:0)

import getpass
import os
import bcrypt

new=None

def two_hash():

 master_key = getpass.getpass('enter pass word ')

 salt = bcrypt.gensalt()

 combo =  salt + master_key

 hashed = bcrypt.hashpw(combo , salt)

 allow = raw_input('do you want to update pass ')


 if allow == 'y':

  new =  getpass.getpass('enter old pass word ')

  combo = salt + new

  bcrypt.hashpw(combo , salt)

  if ( bcrypt.hashpw(combo , salt) == hashed ):

   new = getpass.getpass('enter new pass ')

   print  new


 else :
  pass


if __name__ == '__main__':
 two_hash()

注1:我想将我的代码拆分为某个功能,但我无法帮助将其拆分为某个功能

答案 2 :(得分:-2)

这是您拥有的单个用户应用程序吗?如果您可以提供更多信息,那就是您正在努力的

您可以阅读密码文件(包含用户名和密码) - 用户进行身份验证时,将用户名和密码与文本文件中的组合相匹配 - 当用户想要更改密码时,用户提供新旧密码。将用户名和旧密码组合与文本文件中的组合进行比较,如果匹配,则存储新的

答案 3 :(得分:-2)

尝试使用JSON。 json文件的一个例子是:

{
    "Usernames": {
        "Username": [
            {
                "Password": "Password123"
            }
        ]
    }
}

然后编辑json:

jsonloads = json.loads(open('json.json').read()) #Load the json

username = input("Enter your username: ") #Get username as a string
for i in jsonloads["Usernames"]: #Iterate through usernames
    if i == username: #If the username is what they entered
        passw = input("New password: ") #Ask for new password
        jsonloads["Usernames"][i][0]["Password"] = passw #Set the password
        jsonFile = open("json.json", "w+") #Open the json
        jsonFile.write(json.dumps(jsonloads, indent=4)) #Write
        jsonFile.close() #Close it 
        break #Break out of the for loop
else: #If it remains unbroken
    print("You aren't in the database. ")
    user = input("Username: ") #Ask for username
    passw = input("Password: ") #Ask for password for username
    item = {"Password":pass} #Make a dict
    jsonloads["Usernames"].update({user: item}) #Add that dict to "Usernames"
    with open('json.json','w') as f: #Open the json
        f.write(json.dumps(jsonloads, indent=4)) #Write

这样的东西应该有用,但是还没有测试过它。

另外,请记住始终加密密码!