hash模块和学生登陆系统

一、hashlib

   特点1   哈希通过丢失一部分数据,使得无法从结果逆推出输入所以哈希算法是不可逆的

   特点2   哈希相同输入得到相同的结果,不同的输入得到不同的结果 特点2

import hashlib

 1,常见的哈希算法:md5,sha1,sha

       import hashlib

       md5 = hashlib.md5(b"123")

 2,盐值混淆

  md5.update(b"abc")

        print(md5.hexdigest())

        import hmac

        key = b"1"       对称加密使用到的密钥

        h = hmac.new(key, b"2", "md5")

        print(h.hexdigest())

save_account = "123@qq.com"

save_passwd = "a906449d5769fa7361d7ecc6aa3f6d28"

account = input("请输入你的账户:")

passwd = input("请输入你的密码")

If account==save_account and hashlib.md5(passwd.encode()).hexdigest() == save_passwd:

    print("登陆成功")

else:

print("登录失败")

二、学生登陆系统

def register():

    account = input("请输入注册的用户名:")  用户输入账户

    if os.path.exists("account.txt"):检测账户是否存在于文件中

        account_dc = json.load(open("account.txt", "rt"))

    else:

        account_dc = {}

    if account_dc.get(account):如果账户存在

        print("该账户已存在,请重新注册") 提醒用户重新输入账户

    else:  如果账户不存在

        password = input("请输入密码:")用户输入密码

        confirm = input("请再次输入密码进行确认:")

         if password == confirm:  将用户的账户密码保存到文件中

            encrypt_pwd = hashlib.md5(password.encode()).hexdigest()

            account_dc[account] = encrypt_pwd

            json.dump(account_dc, open("account.txt", "wt"))

             打印用户注册成功

            print("恭喜注册成功")   打印用户注册成功

        else:前后两次密码如果不一致

print("前后密码不一致,请重新注册")告诉用户密码输入错误重新注册

def login():

    account_dc = json.load(open("account.txt", "rt"))读取系统中保存的账户信息

    account = input("请输入用户名:")请输入要登录的账户:

    password = input("请输入密码:")请输入你的密码:

    encrypt_pwd = hashlib.md5(password.encode()).hexdigest()判断用户的账户是否存在于文件中

if account_dc.get(account):  如果存在

        if account_dc[account] == encrypt_pwd:如果该账户的密码是和用户输入的密码相同

            print("登陆成功")打印登录成功

           else:如果不同

            print("登陆失败")打印登录失败

else:如果不存在

        print("登陆失败")打印登陆失败

"""

1.注册

2.登陆

3.退出程序

请输入你的选择:

"""

while True:

    select = input(menu)

    if select == "1":1.注册

        register()

    elif select == "2": 2.登陆

        login()

    elif select == "3":退出程序

        sys.exit()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值