Python 官方文档:入门教程 => 点击学习
目录1. hashlib 模块概述1.1hashlib 模块特点1.2hashlib 模块使用步骤2. hashlib 工作原理2.1hash 算法特点2.2hash 构造方法2.3
前言:
在互联网的时代,我们在网络中传输过程中都是要经过加密的,常见网络数据传输的加密方式有MD5
和RSA
算法。当然,加密算法还有很多中按加密、解密方式不同分为:对称加密
、非对称加密
、hash加密
。其中MD5算法的基础是使用的hash
算法,针对不同安全的hash
安全算法,python
也提一个通用接口hashlib
模块。
hashlib
是Python
内置用于对安全哈希和消息摘要的通用接口模块。hashlib
模块支持提供目前主流hash算法如MD5
、SHA-1
、SHA-2
、SHA-256
等通用构造方法,并且返回带有同样接口的hash对象。
hash
算法操作,替代md5
模块和sha
模块import hashlib
hashlib
模块中加密方式是我们常见的hash
算法。hash算法又称为散列表(hash table
),也叫做哈希表。
直接定址方法
hash(key) = key
hash(key) = a*key+b
数学分析方法
除留余数方法
hash(key) = key % p
hash
函数接收到输入的字符串,首先会先进行预处理-哈希计算-输入摘要MD5
MD5:message-Digest AlGorithm 5 信息-摘要算法5,该算法用于信息完整性进行校验
SHA-1
SHA:secure Hash Algorithm 安全散列算法1,是一种密码散列算法,SHA-1可以生成摘要消息为40位的16进制即160位(20字节)的散列值
hashlib 模块相关属性
属性 | 作用 |
---|---|
hashlib.algorithms_guaranteed | 保证所有平台上都支持哈希算法的名称 |
hashlib.algorithms_available | 保证平台上运行的Python解释器上可用的hash算法的名称 |
hashlib 构造对象相关的属性
属性 | 作用 |
---|---|
hash.digest_size | 以字节表示哈希对象的大小 |
hash.block_size | 以字节表示哈希算法的内部块大小 |
hash.name | 哈希对象的名称 |
hashlib 模块相关方法目前可以支持主流hash算法。
方法 | 作用 |
---|---|
hashlib.pbkdf2_hMac(hash_name,passWord,salt,itera,dklen=None) | PKCS#5基于密码的秘钥派生函数2,作为HMAC作为伪随机函数 |
hashlib.scrypt(password,*,salt) | 基于密码加密的秘钥派生函数 |
hashlib.md5() | md5加密方式 |
hashlib.sha1 | sha1加密方式 |
hashlib.sha256 | sha256加密方式 |
hashlib.blake2b () | blake2b加密方式 |
hashlib.blake2s | black2s加密方式 |
hashlib 构造对象相关的方法
方法 | 作用 |
---|---|
hash.update(data) | 以字节表示哈希对象 |
hash.digest() | 返回当前已传给update()方法的数据摘要 |
hash.hexdigest() | 以16进制的字符串表示哈希数据值 |
hash.copy() | 将hash对象复制,共享初始数据的摘要 |
我们学习hashlib模块中对字符串进行hash算法处理,我们来实操一下吧
import hashlib
text_md5 = hashlib.md5()
text_md5.update(bytes("hello juejing",encoding="utf-8"))
print("md5:",text_md5.hexdigest())
text_sha1 = hashlib.sha1()
text_sha1.update(bytes("hello juejing",encoding="utf-8"))
print("sha1:",text_sha1.hexdigest())
text_sha256 = hashlib.sha3_256()
text_sha256.update(bytes("hello juejing",encoding="utf-8"))
print("sha256:",text_sha256.hexdigest())
text_crc32 = hashlib.()
text_sha256.update(bytes("hello juejing",encoding="utf-8"))
print("sha256:",text_sha256.hexdigest())
? 重要说明
加盐写法一:
text_md5 = hashlib.md5(b"key")
text_md5.update("字符串".encode("utf-8"))
加盐写法二:
key = "字符串"
yan = "字符串2"
text_md5 = hashlib.md5()
text_md5.upadte((key+yan).encode("utf-8"))
本期,我们对hashlib模块中hash算法特点、hashlib模块相关支出算法的方法进行学习和实操。在hash算法中我们常用使用md5/sha1/sha256
主要用于文本校验、用户登录认证等数据校验同时,hash算法确保数据的完整性,具有不可逆性,同时它会遭遇到暴力碰撞,因此hash长度越长的安全性也越高。
到此这篇关于Python hashlib模块兴趣的文章就介绍到这了,更多相关Python hashlib模块内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Python hashlib模块详情
本文链接: https://lsjlt.com/news/158779.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0