kenziehong Ответов: 1

Не удалось определить функции verifypassword, setnewpassword в классе passwordmanage


НАЗНАЧЕНИЕ:

Вы не должны использовать полнофункциональный фреймворк, просто простой код
Никакой базы данных, взаимодействия с пользователем или другой функциональности не требуется (поэтому нет HTML/CSS/JavaScript); это просто должен быть код, который запускается и проходит тесты
----------------------------------------------------------------------------------

менеджер паролей.
Разработайте программу, которая будет управлять паролями, отвечающими требованиям
пароль для системы.
класс PasswordManager
Класс PasswordManager должен иметь только 2 переменные-члена, которые будут хранить имя пользователя и имя пользователя.
зашифрованный пароль (строка).
Класс PasswordManager должен иметь следующие две защищенные функции
encrypt(string) : принимает пароль (string) и возвращает зашифрованную форму пароля
verifyPassword(string): принимает строку (пароль) и возвращает true, если после шифрования она соответствует
зашифрованная строка, хранящаяся в переменной-члене. Else возвращает false.
Класс PasswordManager должен иметь следующие две открытые функции
validatePassword(string): это принимает строку (пароль) и возвращает true, если она соответствует следующим требованиям
критерий
- Пароль не должен содержать пробелов
- Пароль должен быть длиной не менее 6 символов.
- Пароль должен содержать хотя бы одну заглавную и хотя бы одну строчную букву.
- Пароль должен содержать хотя бы одну цифру и символ.
Если пароль не соответствует этим требованиям,программа должна вывести сообщение с сообщением о том, что пароль не соответствует этим требованиям.
пользователь,почему пароль недействителен, в частности.Он также должен продолжать цикл до тех пор, пока пользователь не введет savalid
пароль.
setNewPassword: принимает строку (предлагаемый пароль). Если он соответствует критериям в validatePassword, то он
шифрует пароль, сохраняет его в переменной-члене и возвращает значение true. В противном случае возвращает false.
Место хранения
Используйте файл “password.txt-чтобы сохранить имя пользователя и зашифрованный пароль. Если он не существует, создайте его при первом запуске.
ввод-вывод
Основная функция должна создавать и использовать один экземпляр класса PasswordManagerclass.
Ваша программа будет использовать следующее меню, чтобы предложить пользователю протестировать реализацию:

A. Новый Пользователь
B. Проверка Пароля
C. Вход В Систему
D. Изменение Пароля

Что я уже пробовал:

from passlib.context import CryptContext
from bcrypt import hashpw, gensalt
import re 


class PasswordManager:

	plaintext_password = input("Enter your password: ")
	hashed = hashpw(plaintext_password.encode(), gensalt())
	print(hashed)

	pwd_context = CryptContext(
			schemes=["pbkdf2_sha256"],
			default="pbkdf2_sha256",
			pbkdf2_sha256__default_rounds=30000)	

	def encrypt_password(self):

		encrypt_pwd =self.pwd_context.encrypt(self.plaintext_password)
		#print(encrypt_pwd)
		return encrypt_pwd

	def verifyPassword(self,password,hashed):

		return self.pwd_context.verify(password,hashed)

 
	def validatePassword(password): 		
		while True:

			if len(password)<7:
				print("The password must be at least 6 characters long")
				break	
			elif re.search(r'[\s]',password):
				print("The password must not contain any whitespace")
				break				
			elif not re.search("[a-z]", password):
				print("The password must contain at least one lowercase")
				break
			elif not re.search("[A-Z]", password):
				print("The password must contain at least one uppercase")
				break
			elif not re.search("[0-9]", password):
				print("The password must have at least one digit")
				break
			elif not re.search("[@#$%]", password):
				print("The password must have at least one symbol in @#$%")
				break
			else:
				return True
				
	def setNewPassword(proposed_password):

		if validatePassword(proposed_password):
			pass
hong = PasswordManager()
#hong.encrypt_password()
#hong.verifyPassword('hong')

Richard MacCutchan

В чем же проблема?

1 Ответов

Рейтинг:
0

Richard MacCutchan

Первым (подразумеваемым) параметром, передаваемым любой функции-члену класса, является ссылка на объект. Таким образом, ваши два метода должны иметь следующие сигнатуры:

def validatePassword(self, password):

	
def setNewPassword(self, proposed_password):