Python实现一个密码管理系统

本文介绍了如何使用Python实现一个密码管理系统,系统能够存储英文产品的用户名和密码,并且对数据进行加密存储。密码和产品名转化为ASCII码进行加密。

Cmd任务下Python实现个人密码管理系统

要求

  1. 可以存储某个产品的用户名和密码

  2. 产品名字和用户名以及密码都必须英文

    提示:可以使用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”,表示作为“导入文件”
    '''
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值