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的主要内容,如果未能解决你的问题,请参考以下文章

0420模块 序列化模块 hashlib模块

python提供了一个进行hash加密的模块:hashlib

python加密---hashlib模块

Python 生成哈希hash--hashlib模块

hash模块 hashlib 和hmac

Python模块 - hashlib