Python编程:hashlib模块hmac模块-摘要算法
【摘要】 摘要算法模块,hashlib
碰撞:把无限多的数据集合映射到一个有限的集合中
要注意摘要算法不是加密算法,不能用于加密(因为无法通过摘要反推明文),只能用于防篡改,但是它的单向计算特性决定了可以在不存储明文口令的情况下验证用户口令。
对原始口令加一个复杂字符串来实现,俗称“加盐”:加salt算法
通过彩虹表根据哈希值反推原始口令
hashlib模块
imp...
摘要算法模块,hashlib
碰撞:把无限多的数据集合映射到一个有限的集合中
要注意摘要算法不是加密算法,不能用于加密(因为无法通过摘要反推明文),只能用于防篡改,但是它的单向计算特性决定了可以在不存储明文口令的情况下验证用户口令。
对原始口令加一个复杂字符串来实现,俗称“加盐”:加salt算法
通过彩虹表根据哈希值反推原始口令
hashlib模块
import hashlib
# md5
m = hashlib.md5()
m.update(b"admin")
print(m.hexdigest())
# 21232f297a57a5a743894a0e4a801fc3
m1 = hashlib.md5()
m1.update("试试中文行不行".encode("utf-8"))
print(m1.hexdigest())
# dede62a39baa08cbe71bad709603b917
# 简单写法
s = "i love you"
ret = hashlib.md5(s.encode("utf-8")).hexdigest()
print(ret)
# 459b9511a7f650ebd327889c45cc4e9b
print(len("459b9511a7f650ebd327889c45cc4e9b")) # 32
# sha1
ret = hashlib.sha1(s.encode("utf-8")).hexdigest()
print(ret)
# bb7b1901d99e8b26bb91d2debdb7d7f24b3158cf
print(len("bb7b1901d99e8b26bb91d2debdb7d7f24b3158cf")) # 40
# sha256
s = hashlib.sha256()
s.update(b"admin")
print(s.hexdigest())
# 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
hmac模块
import hmac
h = hmac.new(b"123456") # key
h.update(b"admin") # vlaue
print(h.hexdigest())
# 20238ad293024e2ea2f505db927cd52e
# 加盐salt
message = b"hello world"
salt = b"secret"
ret = hmac.new(key=salt, msg=message, digestmod="md5").hexdigest()
print(ret)
# 78d6997b1230f38e59b6d1642dfaa3a4
Base64模块
是一种用64个字符来表示任意二进制数据的方法
import base64
ret = base64.b64encode(b"afsdfsdfsfasdf")
print(ret)
# b'YWZzZGZzZGZzZmFzZGY='
ret = base64.b64decode(b'YWZzZGY=')
print(ret)
# b'afsdf'
文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。
原文链接:pengshiyu.blog.csdn.net/article/details/79018671
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)