Проблема с объединением строк / получением значения из файла - PullRequest
0 голосов
/ 04 февраля 2020

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

hashpass = hashlib.sha256()
salt = ['hbjGVY0Kj07,kbjgvhjb,ZsGhnBi0lp]

for line in login:
            usr = input()
            pas = input()
            log = line.split(',')
            if usr in line:
                x = line
                salt_num = int(x[2])
                setpass = str(pas + salt[salt_num])
                hashpass.update(setpass.encode('utf-8'))

Я перепробовал все, но по-прежнему ничего не получается, когда я объединяю строку, я просто получаю значение pas

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Я исправил проблему, но получаю разные ошибки при сравнении переменной hashpass с log [1] , при сравнении моей программы заявляет, что пароль неправильный, вот вся программа для справки.

login = open('login.csv','r')
def logging():
    atmptcount = 0
    while atmptcount < 3:
        usr = input('Please enter your username: ')
        pas = input('Please enter your password: ')
        hashpass = hashlib.sha256()
        for line in login:
            log = line.split(',')
            if usr.upper() in line:
                print(log[2])
                salt_num = int(log[2])
                setpass = str(pas + salt[salt_num])
                hashpass.update(setpass.encode('utf-8'))
            if usr == log[0] and hashpass.hexdigest() == log[1]:
                print('correct')
                return True

        print(hashpass.hexdigest())
        print(log[1])
        atmptcount = atmptcount + 1
        print('Sorry you have entered your details incorrectly, please try again')
        login.seek(0)
    print('Sorry, you have reached your maximum login attempts!')
    return False

Я немного изменил имена переменных, но это само понятие

0 голосов
/ 04 февраля 2020

Вот что я пробовал, и это работает. В коде, которым вы поделились, есть проблема, которую я бы попросил проверить перекрестно с исходным кодом.

import hashlib
hashpass = hashlib.sha256()
salt = ['hbjGVY0Kj07','kbjgvhjb','ZsGhnBi0lp']
login = ["user,68a782faf939dfa370345934d255101926b7f59b3a65ab7db5b0bc6f78ec25e5,0"]

for line in login:
            #print(line)
            usr = input()     # I input "user"
            pas = input()     # I input "qwerty"
            log = line.split(',')
            #print(log)
            if usr in line:
                x = log
                salt_num = int(x[2])
                setpass = str(pas + salt[salt_num])
                print(setpass)
                hashpass.update(setpass.encode('utf-8'))

OUTPUT --> qwertyhbjGVY0Kj07

Вещи, которые я бы посоветовал вам проверить:

  • Все элементы в списке salt заключены в кавычки, т. е. в виде строки.

  • Имя входа - это список строк, имеющих элементы с разделенными запятыми значениями, как я создал.

  • изменить x=line на x=log внутри if condition.

...