要求
-
可以存储某个产品的用户名和密码
-
产品名字和用户名以及密码都必须英文
提示:可以使用ord函数将英文字符转换为ASCII码
数据存储
- 加密后的txt文件
- 但是加密算法可以自己设计实现,例如,ord函数转ASCII码
'''
规范
***知识点***
既代表分隔符,也代表三星知识点
'''
import getpass
import hashlib
# input("请输入账户:")
# str = getpass.getpass("请输入登录密码:")
# print(str)
PASSWORD_FILE_NAME = 'password_book.txt'
PASSWORD = None
def is_first_use():
try:
with open(PASSWORD_FILE_NAME,'r') as fp1:
global PASSWORD
PASSWORD = fp1.readline()
if not PASSWORD:
return True
else:
return False
'''***知识点***
-在函数内部使用global关键字 -如果是函数外部使用,但是程序内部未声明是全局变量,仍然无法改变变量的值
- 全局变量在函数外部一定要申明才可以
'''
except:
print("**********登录界面**********\n")
print("请根据提示设置本系统登录密码\n")
print("两次输入的登录密码将不会显示\n")
return True
def MD5encoding(password):
#MD5编码
hashed_pwd = hashlib.md5(bytes(password,encoding='utf-8')).hexdigest()
return hashed_pwd
def init_password():
while True:
# INIT_PASSWORD1 = getpass.getpass("请设置初始密码:")
# INIT_PASSWORD2 = getpass.getpass("请再次输入确认密码:")
INIT_PASSWORD1 = input("请设置初始密码:")
INIT_PASSWORD2 = input("请再次输入确认密码:")
if INIT_PASSWORD1 == INIT_PASSWORD2:
with open(PASSWORD_FILE_NAME,'w') as fp:
#加密&存储
global PASSWORD
PASSWORD = INIT_PASSWORD1
fp.write(MD5encoding(PASSWORD)+'\n')
print("恭喜!两次输入密码一致\n系统已初始化")
break
else:
print("两次输入密码不一致\n")
# def MD5decoding():
#MD5解码
def login_check():
#用户输入密码
#比较登陆密码与数据库中的密码是否一致
#返回True OR False
while True:
USER_PASSWORD = input("请输入用户密码:")
with open(PASSWORD_FILE_NAME,'r') as fp3:
if MD5encoding(USER_PASSWORD) == fp3.readline().replace('\n',''):
return True
else:
print("输入密码错误!")
def index_page():
def AddPassword(fp):
WEB_NAME = input("请输入网站名称:")
WEB_PASSWORD = input("请输入网站密码:")
fp.seek(0,2)
fp.write(MD5encoding(WEB_NAME+WEB_PASSWORD)+'\n')
fp.flush()
def PostPassword(fp):
#请输入需要修改的网站名称
#请输入原始密码
#请输入新密码
print('更新密码')
def displayPassword(fp):
fp.readline()
fp.seek(0,1)
for line in fp:
print(line)
while True:
print('输入0,退出系统\n输入1,增加密码\n输入2,修改指定密码\n输入3,显示所有密码')
prcType = input("请输入操作:")
with open(PASSWORD_FILE_NAME,'r+') as fp2:
if prcType == '1':
AddPassword(fp2)
elif prcType == '2':
PostPassword(fp2)
elif prcType == '3':
displayPassword(fp2)
else:
break
def main():
if is_first_use():
#设置初始密码
init_password()
if login_check():
#如果验证通过,进入到主页面
index_page()
if __name__ == '__main__':
main()
'''***知识点***
-程序的入口
-等于'__main__'表示为主运行文件
-等于文件名,例如“PasswordSaveSys.py”,表示作为“导入文件”
'''
本文介绍了如何使用Python实现一个密码管理系统,系统能够存储英文产品的用户名和密码,并且对数据进行加密存储。密码和产品名转化为ASCII码进行加密。

1039

被折叠的 条评论
为什么被折叠?



