Python 生成哈希hash--hashlib模块

1.生成hash并保存在本地

(1)代码

[python] view plain copy
import hashlib 
import shelve 

#原密码paw={"water":"123456","root":"admin123"} 
#生成hash 
m1 = hashlib.md5("123456".encode("utf-8")) 
m2 = hashlib.md5("admin123".encode("utf-8")) 
h1 = m1.hexdigest() 
h2 = m2.hexdigest() 
print(h1) 
print(h2) 

#现在利用shelve保存账号和密码信息到本地 
db1 = shelve.open("E:/Python_Code/work/hash_dic") 
db1["water"] = h1 
db1["admin"] = h2 

(2)输出

e10adc3949ba59abbe56e057f20f883e

0192023a7bbd73250516f069df18b500

2.模仿登陆

上面我们已经生成密码信息的哈希值,并且用shelve库保存到了本地,现在是时候使用它了。

(1)代码

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
[python] view plain copy
import hashlib 
import shelve 

#从shelve文件中读取用户信息 
db1 = shelve.open("E:/Python_Code/work/hash_dic") 

#退出系统 
def tuichu(): 
print("正在退出系统...") 
exit("期待下次与您相遇!") 

# 操作函数,依据用户名给予不同的权限 
def caozuo(user_name): 
if user_name=="admin": 
tuichu() #测试用 
else: 
tuichu() #测试用 
#登录函数 
def login(): 
for i in range(3): #只有3次登录机会 
user_name = input("帐号:") 
user_pass = input("密码:") 
m = hashlib.md5(user_pass.encode("utf-8")) 
hash_pass = m.hexdigest() 
for ku,vu in db1.items(): 
if user_name == ku and hash_pass == vu: 
print("登录成功!欢迎您{}!".format(ku)) 
#这里可以执行操作函数 
caozuo(user_name) 
break 
else: 
print("帐号或密码错误!您还有{}次机会!".format(2-i)) 
continue 
else: 
print("今日登录次数已经用完!") 
if __name__ == '__main__': 
login()

(2)运行
在这里插入图片描述

posted @ 2022-10-07 20:42  I'm_江河湖海  阅读(11)  评论(0)    收藏  举报