将用户名和密码存储到字典中?

时间:2014-05-03 22:56:36

标签: python

目前我正在使用python中的一个小型登录屏幕,我想让它做的是要求用户注册他们是不是已经创建的帐户,但我遇到的一个小问题是如何保存用户名和密码进入字典,我还想知道如何将字典保存为.txt文件,如果可能的话,可以加载该文件以恢复用户信息/变量。

我不太确定我的意思是要求我的代码提供帮助,或者我可以提出这样的问题,我只需要一个reffernce或一点帮助。也只是为了补充我不要求别人为我做这件事,只是为了给我一个正确的方向推力

请不要激怒我; p

import sys
import math
user = None
password = None
store = dict()
newUser = True


while newUser == True:
    userguess=""
    passwordguess=""
    print("Hello, Please create a unique username and password.")
    user = input("USERNAME: ")
    password = input("PASSWORD: ")
    store[user] = password
    print(store)

这就是我到目前为止所尝试过的,我在这里从另一个页面收集了存储到字典,只是在寻找一个关于将内容分配给密钥的细分

2 个答案:

答案 0 :(得分:4)

你不...你把一个哈希保存到一个字典中(哈希是一个简单的不可逆编码)

例如: md5("password") == '5f4dcc3b5aa765d61d8327deb882cf99'

然而,没有真正的方法可以从那回到密码

nothing_does_this('5f4dcc3b5aa765d61d8327deb882cf99') == "password"

(不完全正确......但与概念足够接近)

import hashlib
def create_users()
   users = {}
   while True:
      username = raw_input("Enter Username:")
      password = raw_input("Enter Password:")
      users[username] = hashlib.md5(password).hexdigest()
      if raw_input("continue?")[0].lower() != "y":
          return users

def login(userdict):
    username = raw_input("Username:")
    password = raw_input("Password:")
    return userdict.get(username,None) == hashlib.md5(password).hexdigest()

users = create_users()
if login(users):
   print "Double Winning!!!"
else:
   print "You Lose Sucka!!!"

正如所指出的那样md5不是一个非常安全的哈希,有更好的使用sha256仍然相当不错我认为,bcrypt甚至更好(对于一些更好的定义)...但是md5是一个简单的哈希到帮助理解它们是什么..

答案 1 :(得分:3)

如果您已经构建了此词典,则可以将其保存到pickle的文件中。

pickle.dump( user_dict, open( "save.p", "wb" ) )

但是,您应该了解存储密码时的最佳做法,并确保存储密码的安全哈希版本而不是明文中的值。