Python 生成哈希hash--hashlib模块

Posted sjc9009

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 生成哈希hash--hashlib模块相关的知识,希望对你有一定的参考价值。

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] 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()

文:http://www.ylsjwang.com/dianshiju/24.html
(2)运行

 技术分享图片
























































以上是关于Python 生成哈希hash--hashlib模块的主要内容,如果未能解决你的问题,请参考以下文章

SHA1 哈希值是不是均匀分布?

小哈学python----hashlib模块

python hashlib模块

hash模块 hashlib 和hmac

hashlib模块,random模块,序列化

22.hashlib模块