Python中hashlib模块

一、什么是Hash
Hash,译做"散列",也有直接音译为"哈希"的。把任意长度的输入,通过某种hash算法,变换成固定长度的输出(通常用16进制的字符串表示),该输出就是散列值,也称摘要值。该算法就是哈希函数,也称摘要函数。

二、Hash作用场景

1.一般用来检验数据是否被篡改,摘要函数是一个单向函数,通过digest的反推出数据非常困难,只要对原数据做一个bit的修改,都会导致计算出不同的摘要。
2.可以用来检验用户登录,通过摘要算法保存密码的摘要值到数据库,这样有权访问的人也无法获取用户的明文口令。但是黑客会事先计算出各种常用口令的md5值,无需破解,对比数据库md5值就能得到使用常用口令的用户账号,但可以通过加盐salt,经过Salt处理的MD5口令,只要Salt不被黑客知道,即使用户输入简单口令,也很难通过MD5反推明文口令。如果有两个用户用同一个口令可以用username + password + salt的方式保证摘要值不一样

三、hashlib介绍

hashlib是Python的内置模块,提供了多种安全方便的摘要方法,在大多数平台上支持sha1()、sha224()、sha256()、sha384()、sha512()、blake2b()、sha3_512()、shake_128()、shake_256()、md5(),这些构造方法在使用上通用,返回带有同样接口的hash对象,对算法的选择,差别只在于构造方法的选择。

四、python中使用hashlib模块

使用方法:
import hashlib

第一种方式
#构建一个md5对象
x = hashlib.md5()
#把数据添加到对象里
x.update('hello'.encode(encoding='utf-8'))
#返回十六进制str摘要值,通常用于邮件传输或非二进制环境中。通常我们比较摘要时,比较的就是这个值!
print(x.hexdigest())
结果:
5d41402abc4b2a76b9719d911017c592

#返回bytes格式的消息摘要
print(x.digest())
结果:
b']A@*xbcK*vxb9qx9dx91x10x17xc5x92'


第二种方式
hashlib.new(name[data])
一个通用的构造方法,name是某个算法的字符串名称,data是可选的bytes类型待摘要的数据。
x = hashlib.new('md5',b'hello')
print(x.hexdigest())
结果:
5d41402abc4b2a76b9719d911017c592

  

原文地址:https://www.cnblogs.com/lucktomato/p/15166498.html