ASSIGNMENT:
You should NOT use a full-featured framework, just plain code
No database, user interaction or other functionality is required (so no HTML/CSS/JavaScript);
it just needs to be the code which runs and passes the tests
Password Manager.
Design a program that will program that will manage passwords that meets the requirements of a
password for thesystem.
class PasswordManager
The PasswordManager class should have just 2 member variable, which will store the user name and the
encrypted password (astring).
The PasswordManager class should have the following two protected functions
encrypt(string) : takes a password (string) and returns the encrypted form of the password
verifyPassword(string): takes a string (a password) and returns true if, once encrypted, it matches the
encrypted string stored in the the member variable. Else returns false.
The PasswordManager class should have the following two public functions
validatePassword(string): this takes a string (a password) and returns true if it meets the following
criteria
- The password must not contain any whitespace
- The password must be at least 6 characters long.
- The password must contain at least one uppercase and at least one lowercase letter.
- The password must have at least one digit and symbol.
If the password does not meet these requirements,the program should display a message telling the
user why the password is invalid,specifically.It should also continue to loop until the user enter savalid
password.
setNewPassword: takes a string (a proposed password). If it meets the criteria in validatePassword, it
encrypts the password and stores it in the member variable and returns true. Otherwise returns false.
Storage
Use a file “password.txt” to store username and encrypted password. If not exist, create it at first run.
Input - Output
The main function should create and use one instance of the PasswordManagerclass.
Your program will use the following menu to prompt the user to test the implementation:
A. New User
B. Validate Password
C. Login
D. Change Password
"""
"""
???????????????????????????????????????
MY NOTES:
1. verifyPassword function can not run
2. validatePassword (not follow requirement of assignment -
It should also continue to loop until the user enter savalid
password. )
3. can not define setNewPassword
"""
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(self,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(self,proposed_password):
if validatePassword(proposed_password):
pass
hong = PasswordManager()
#hong.encrypt_password()
#hong.verifyPassword(‘hong’)