hashlib.sha256:

import hashlib

x = hashlib.sha256()
x.update(b"asd")
print("x_1 = " + x.hexdigest())

x = hashlib.sha256()
x.update("asd".encode())
print("x_2 = " + x.hexdigest())

x = hashlib.sha256()
x.update(b"a")
x.update(b"s")
x.update(b"d")
print("x_3 = " + x.hexdigest())

y = hashlib.sha256(b"asd").hexdigest()
print("y_1 = " + y)

z = hashlib.new("sha256")
z.update(b"asd")
print("z_1 = " + z.hexdigest())

运行结果:

x_1 = 688787d8ff144c502c7f5cffaafe2cc588d86079f9de88304c26b0cb99ce91c6
x_2 = 688787d8ff144c502c7f5cffaafe2cc588d86079f9de88304c26b0cb99ce91c6
x_3 = 688787d8ff144c502c7f5cffaafe2cc588d86079f9de88304c26b0cb99ce91c6
y_1 = 688787d8ff144c502c7f5cffaafe2cc588d86079f9de88304c26b0cb99ce91c6
z_1 = 688787d8ff144c502c7f5cffaafe2cc588d86079f9de88304c26b0cb99ce91c6

hashlib.pbkdf2_hmac加盐:

import hashlib
import binascii
import os

x = hashlib.pbkdf2_hmac("sha256", b"asd", b"", 1)
print("x_1 = " + binascii.hexlify(x).decode())

x = hashlib.pbkdf2_hmac("sha256", b"asd", b"", 1) # 相同盐值
print("x_2 = " + binascii.hexlify(x).decode())

x = hashlib.pbkdf2_hmac("sha256", b"asd", b"", 10) # 相同盐值,不同迭代次数
print("x_3 = " + binascii.hexlify(x).decode())

x = hashlib.pbkdf2_hmac("sha256", b"asd", b"dsa", 1) # 不同盐值,相同迭代次数
print("x_4 = " + binascii.hexlify(x).decode())

y = hashlib.pbkdf2_hmac("sha256", b"asd", os.urandom(16), 1) # 随机生成盐值
print("y_1 = " + binascii.hexlify(y).decode())
运行结果:

x_1 = b930d78b395bde9a074f5f762bc7c64aa85a05cd74dbf22d25c2357c6a59f883
x_2 = b930d78b395bde9a074f5f762bc7c64aa85a05cd74dbf22d25c2357c6a59f883
x_3 = 96c27cfb86a1b4a9e9c9e8ae1f8c3c3188c1c23ff268e410a9a6f7bca3a35f67
x_4 = f9653d10a4cc5b956fb030b1b420f8fdf145adfdd28650e007dd912b8e2a6c5a
y_1 = 338208350ccb7c6c99c582f83fda351801f79cd62def6799456a06da6598f567

hashlib.blake2b:

import hashlib
import hmac
import cryptography.fernet

x = hashlib.blake2b()
x.update(b"asd")
print("x = " + x.hexdigest())
print("true" if hmac.compare_digest(x.hexdigest(), hashlib.blake2b(b"asd").hexdigest()) else "false")

y = hashlib.blake2b(digest_size=5, key=b"", salt=b"", person=b"") # 键控哈希、加盐、个性化
y.update(b"asd")
print("y = " + y.hexdigest())
print("true" if hmac.compare_digest(y.hexdigest(), hashlib.blake2b(b"asd", digest_size=5, key=b"", salt=b"", person=b"").hexdigest()) else "false")

a = cryptography.fernet.Fernet.generate_key() # 自动生成密钥
b = cryptography.fernet.Fernet(a)
c = b.encrypt("asd".encode()) # 使用生成的密钥加密
print(c)
d = b.decrypt(c) # 使用生成的密钥解密
print(d.decode())

z = hmac.new(a, digestmod=hashlib.blake2b) # 使用本地密钥进行加密
z.update(b"asd")
print("z = " + z.hexdigest())
print("true" if hmac.compare_digest(z.hexdigest(), hmac.new(key=a, msg=b"asd", digestmod=hashlib.blake2b).hexdigest()) else "false")

运行结果:

x = e4139471a1800a05b5e02b56669f025d01e33c5655153a4faa29f694f7849c63f97577fcc3e397d1138cf4640e0c2053e74a7af646598310d076dc6f15d1af50
true
y = 940ba28546
true
b'gAAAAABbM9urQSo8QilnHGDUEVL-CCFOkkW4yDOc10yoAp4B-tUabQZw6y8BNbATty8oC-Om555xF8Xr4rQxRDgYkIZ67u9lsQ=='
asd
z = cc18cfb36af92c64bf9a55114e22d178a05a6f10bfe9d1bf7067acb108146edd1ea595cd46d8fbdda58a334d6444a22d404774162f7d675a8ef59f70b983af4e
true

————————————————
原文链接:https://blog.csdn.net/qq_42486920/article/details/80836749

python3的hashlib库sha256、pbkdf2_hmac、blake2b基本用法的更多相关文章

  1. Python3之hashlib模块

    Python3之hashlib   简介: 用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法.在python3中已 ...

  2. Python3 urllib.request库的基本使用

    Python3 urllib.request库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 在Python中有很多库可以用来抓取网页,我们先学习urlli ...

  3. 【转】Python3 (入门6) 库的打包与安装

    Python3 (入门6) 库的打包与安装 本文由 Luzhuo 编写,转发请保留该信息. 原文: http://blog.csdn.net/Rozol/article/details/6940288 ...

  4. 对python3中pathlib库的Path类的使用详解

    原文连接   https://www.jb51.net/article/148789.htm 1.调用库 ? 1 from pathlib import 2.创建Path对象 ? 1 2 3 4 5 ...

  5. hashlib 库

    hashlib 库 hash 是一种算法,用来接收一系列数据,经过计算后得到一个hash值 hash值的三大特征: 1. 如果传入的数据一样,得到的hash值一样 2. 只要采用的hash算法固定,无 ...

  6. Python3下requests库发送multipart/form-data类型请求

    [本文出自天外归云的博客园] 要模拟multipart/form-data类型请求,可以用python3的requests库完成.代码示例如下: #请求的接口url url = "url&q ...

  7. python3 使用语音库pyttsx3

    python3 使用语音库pyttsx3 环境linux+python3.6 sudo pip install pyttsx3 sudo apt-get install espeak 代码实例 imp ...

  8. Python3 常用爬虫库的安装

    Python3 常用爬虫库的安装 1 简介 Windows下安装Python3常用的爬虫库:requests.selenium.beautifulsoup4.pyquery.pymysql.pymon ...

  9. Python3 使用selenium库登陆知乎并保存cookie为本地文件

    Python3 使用selenium库登陆知乎并保存cookie为本地文件 学习使用selenium库模拟登陆知乎,并将cookie保存为本地文件,然后供以后(requests模块)使用,用selen ...

随机推荐

  1. DevExpress的分页Tab控件XtraTabControl控件的使用

    场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  2. AppBoxFuture(八): 另类的ORM实现

      通常的ORM实现基于配置或注释,由反射或Emit生成相应的Sql语句,然后将Sql发送给数据库解析Sql字符串生成AST再交给优化器处理后执行,返回的数据再经由反射或Emit转换为相应的实体实例. ...

  3. 腾讯云游戏服务平台CMatrix品牌全新升级为GameMatrix

    近日,隶属腾讯互娱公共研发运营体系(下文称CROS)下的云游戏服务平台CMatrix宣布进行品牌升级,启用全新商标Tencent GameMatrix,将原先代表云服务的“C”替换成游戏的英文单词“G ...

  4. 六个office免费学习的精品教程 office自学教程让你从小白到高手

    今天给大家分享六个免费学习的精品教程,包括了word,ppt,excel常用的办公三剑客,学会这三个让你办公无忧,也能让你靠这些技术找到一份好工作,这些office自学教程让你从小白到高手. 一.PP ...

  5. Android 7.0新特性

    还望支持个人博客站:http://www.enjoytoday.cn 由于google目前不是无法直接在国内访问,故此,对于android 开发平台的7.0新特性做个保存.也可供大家查阅.原文转自an ...

  6. PHP代码篇(七)--PHP及MySQL已经使用过的函数

    一.PHP常用函数 //数组转字符串 $str = implode(',',$device_string); //字符串转数组 $arr = explode(',',$device_string); ...

  7. Oracle Merge Into 使用注意事项

    我们操作数据库的时候,有时候会遇到insertOrUpdate这种需求.如果数据库中存在数据就update,如果不存在就insert.Orcale数据库都提供了 MERGE  INTO 方法来处理这种 ...

  8. 海思屏幕HAL代码解析

    显示屏幕(LCD)模块提供屏幕相关功能接口,调用者为上层应用模块(含 init.状态机.ui),上下文依赖关系,如图 3-7 所示. 系统框架为 linux+Huawei LiteOS 双系统架构,媒 ...

  9. 挂载system.img并提取文件

    今天提取线刷包的system.img出来,使用Mount命令挂载 $ sudo mount -t ext4 -o loop system.img /mnt mount: 文件系统类型错误.选项错误./ ...

  10. fiddler---Fiddler抓取https协议

    上一篇简单的介绍了Fiddler的使用方法和页面布局介绍,Fiddler默认抓取的是HTTP协议,现在的协议基本上都是基于HTTPS协议的,今天写一篇如何通过Fiddler抓取HTTPS协议 什么是H ...