Python基础-----hashlib模块

用于加密相关的操作,python 3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512MD5 算法

md5

md5 字符串只可以单向加密成密文,不能反解。(可通过撞库进行解密)
如果用于登录密码验证,则可以将密码转换为密文进行比对验证即可

obj = hashlib.md5()   #调用md5消息摘要算法

obj.update('test message'.encode('utf-8'))   #对指定的字符串进行加密,加密长度为32位的字节形式

print(obj.hexdigest())   
# c72b9698fa1927e1dd12d3cf26ed84b2 每个字符串都有唯一值

obj.update('try'.encode('utf-8')) 
 #3a2430952b0188616a70607cce878631  ==> 等价于对  'test message'+'try'  加密
print(obj.hexdigest())

所以可以通过给用户定义的字符串‘加盐’key来增加密文的复杂度

obj1 = hashlib.md5('password'.encode('utf-8')) ` 
#调用md5消息摘要算法,并在该处指定用其他字符串来辅助加密   ‘加盐’

obj1.update('test message'.encode('utf-8'))   

print(obj1.hexdigest())   # c13bbb52245a85ec55bedfb309a4bfb1 

以上加密算法虽然依然非常厉害,但是存在缺陷
即:通过撞库(哈希碰撞)可以反解。
所以为增加安全级别可以使用‘加盐’方式

SHA256

import hashlib
hash = hashlib.sha256('898oaFs09f'.encode('utf8'))
hash.update('alvin'.encode('utf8'))
print (hash.hexdigest())#e79e68f070cdedcfe63eaf1a2e92c83b4cfb1b5c6bc452d214c1b7e77cdfd1c7

python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密

import hmac
h = hmac.new('alvin'.encode('utf8'))
h.update('hello'.encode('utf8'))
print (h.hexdigest())#320df9832eab4c038b6c1d7ed73a5940
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • https://www.cnblogs.com/wupeiqi/articles/5501365.html 模块 ...
    AndroidCat阅读 2,629评论 0 0
  • 常用模块 认识模块 什么是模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文...
    go以恒阅读 6,225评论 0 6
  • 1. 认识模块 1.1 什么是模块 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.p...
    hswangxun阅读 3,800评论 0 1
  • 常用模块学习 什么是模块? 为了维护代码 提高代码的可维护性; 使用模块可以避免函数名和变量名冲突; 可重用 模块...
    drfung阅读 4,023评论 1 1
  • 有时候,放弃一个人更多的是因为失望的积累。 其实有时候放弃一个人总是无声无息的。 你今天做了一件让我倍感失望的事情...
    吃素点亮地球洪秀琴阅读 1,540评论 0 0

友情链接更多精彩内容