hashlib 模块用来进行hash
Posted tf511
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hashlib 模块用来进行hash相关的知识,希望对你有一定的参考价值。
hashlib的基本概述:
python中的 hashlib 模块用来进行hash 或者md5加密,而且这种加密是不可逆的,所以这种算法又被称为摘要算法,
其支持Opennssl库提供的所有算法,包括 md5、sha1、sha224、sha256、sha512 等。
hash是一种算法 是将一个任意长的数据 根据计算 得到一个固定长度特征吗
特征:1、不同输入 可能会有相同的结果 几率特别小
2、相同的输入 必然得到相同结果
3、由于散列(特征)的性质 从原理来看是不可能 反解
4、用来 验证 两个输入的数据是否一致
使用场景:
1、密码验证
2、验证数据是否被篡改 比如游戏安装包 有没有被改过
为了防止别人撞库成功 可用提升密码的复杂度 其次可以为密码加盐(加点内容进去)
ps:撞库破解的原理 把常见的 明文和密文的对应关系 存到了数据库中 运气好就能查询到
常用的属性和方法:
algorithms : 列出所有加密算法
digesti——size: 产生的散列的字节大小
md5()/sha1() :创建一个 md5 或者 sha1加密模式的hash 对象
update(arg) :用字符串参数来更新hash对象,如果同一个has对象重复调用该方法,如下:m.update(a); m.update(b), 则等于m.update(a+b)
digest() : 返回摘要,作为二进制数据字符串值
hexdigest() : 返回摘要,作为十六进制数据字符串值
copy() :复制
下面是一个简单的加密实例:
import hashlib m = hashlib.md5("aaa".encode("utf-8")) print(m.hexdigest())
结果如下:
47bce5c74f589f4867dbd57e9ca9f808
下面是一个简单的加盐实例:
import hashlib m = hashlib.md5("321".encode("utf-8")) #加 m.update("abcdefplkjoujhh".encode("utf-8")) print(m.hexdigest())
结果如下:
7da0befdd8fd811dd0716941c38c0111
关于hmac 的实例:
import hmac # 没啥区别 只是在创建的时候必须加盐 h = hmac.new("abcdefjjjj".encode("utf-8")) h.update("123".encode("utf-8")) print(h.hexdigest())
结果如下:
944b3523fac69f32f6d399a11707da8b
以上是关于hashlib 模块用来进行hash的主要内容,如果未能解决你的问题,请参考以下文章