Я новичок в программировании, и мне интересно, возможно ли это. Я пытаюсь создать скрипт, защищенный паролем, где пароль вводится один раз, а затем требуется для выполнения сценария при следующем открытии скрипта. Я храню и шифрую пароль в файле, а затем проверяю, существует ли файл при следующем открытии скрипта. Проблема, с которой я столкнулся, - проверить, совпадают ли пароли, поскольку исходный пароль находится в функции как локальная переменная.local vs global variables Python
def createFile():
pw = input('Enter Password: ')
pw2 = input('ReType Password: ')
if pw == pw2:
newPw = encrypt(pw, 10) #encodes the string with a key in a seperate encrypt function
pwFile = open('PW.txt', 'a')
pwFile.write(newPw)
pwFile.close()
else:
print('The passwords do not match')
createFile()
if os.path.isfile('PW.txt'):
print('File exists')
pwCheck = input('What is the password? ')
#I can not check pwCheck == pw since pw is a local var.
#progression of script here
else:
createFile()
Я знаю, что считается, что для создания локальной переменной глобально. Есть ли способ реструктурировать то, что я до сих пор делал для этой работы? Поскольку я написал это, я думаю, что я, возможно, придумал возможное решение, но у меня нет времени проверить его сейчас. Я запускаю ту же функцию шифрования с тем же ключом для pwCheck и затем проверяю, является ли она == первой строке PW.txt? Это правильно и/или есть другие решения?
спасибо.
Использование Windows, Python 3.4
Вы должны прочитать существующий пароль из файла, расшифровать его, и проверить его на 'pwCheck' – Claudiu
Обратите внимание, что разумнее хранить * хэш * пароля, а затем сравнить хэш пользовательский ввод того, что находится в файле. – jonrsharpe