вложенные словари Python для хранения имен пользователей и паролей - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь создать словарь, в котором хранятся хешированные имена пользователей и пароли от ввода пользователя ... Правда, теперь я не думаю, что полностью понимаю, как работают вложенные словари, но вот код моей функции:

users = {}    
def addUser():
    print """"
    ########
    Add user
    ########
    """
    while True:
        username = hashlib.sha512(raw_input("Enter username: ")).hexdigest()
        passwd = hashlib.sha512(raw_input("Enter password: ")).hexdigest()
        uid = int(username[:5], 16) % 32

        users[username + passwd] = {
            'User hash':username,
            'Password hash':passwd,
            }

        print users
        cont = raw_input("Press 'X/x' to exit and start the server or ANY other key to continue adding users: ")
        if cont in ['X', 'x']:
            break

Я хочу использовать переменную uid, чтобы сгенерировать уникальный идентификатор для каждого пользователя и сохранить его во вложенном словаре, который будет выглядеть примерно так:

users = { 'uid': 28 { 'User hash': 'BFCDF3E6CA6CEF45543BFBB57509C92AEC9A39FB', 'Password hash': '9D989E8D27DC9E0EC3389FC855F142C3D40F0C50'},'uid': 10 { 'User hash': '8C4947E96C7C9F770AA386582E32CE7CE1B96E69', 'Password hash': '266F83D202FA3DA4A075CEA751B4B8D6A30DA1A8'}

}

1 Ответ

0 голосов
/ 06 ноября 2018

Ответил на мой собственный вопрос после некоторого чтения и игры с кодом.

Вот решенный код, если у кого-то еще есть подобная проблема

import hashlib

users = {}
def addUser()
    print """"
    ########
    Add user
    ########
    """
    while True:
    username = hashlib.sha512(raw_input("Enter username: ")).hexdigest()    #use SHA512 to hash username from raw input
    uid = int(username[:5], 16) % 32                                        #generate uid from hashed username, using math simliar to the chord algorithm but with SHA512 instead of SHA1
    passwd = hashlib.sha512(raw_input("Enter password: ")).hexdigest()      #use SHA512 to hash password from raw input


    users[uid] = {   #store username and password in dictionary 
        'User hash':username,
        'Password hash':passwd,
        }


    print users
    cont = raw_input("Press 'X/x' to exit and start the server or ANY other key to continue adding users: ")
    if cont in ['X', 'x']:
        break

Я понял это, посмотрев, что на самом деле сделал вызов print users, и он напечатал комбинацию двух хешей, поэтому замена users[username + passwd] на users[uid] решила проблему!

Мораль истории: если это не сработает ... Проведите исследование, поиграйте и постарайтесь! ;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...