Python编程:hashlib模块hmac模块-摘要算法

举报
彭世瑜 发表于 2021/08/14 01:07:05 2021/08/14
【摘要】 摘要算法模块,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
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

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
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

Base64模块

是一种用64个字符来表示任意二进制数据的方法

import base64

ret = base64.b64encode(b"afsdfsdfsfasdf")
print(ret)
# b'YWZzZGZzZGZzZmFzZGY='

ret = base64.b64decode(b'YWZzZGY=')
print(ret)
# b'afsdf'
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/79018671

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。