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. image-webpack-loader包安装报错解决

    在家里安装这个包,总是报错安装失败,换成最快的淘宝镜像也是如此,先卸载重新安装亦是如此,于是想到了原因,到了公司,公司的网是可以连接国外的,安装成功了! 也就是说,需要翻墙才可以装成功.

  2. 工具类Base64Util

    在和服务器交互的过程中,有时候我们需要把图片编码成base64字符串传输,记录一下工具类 import android.graphics.Bitmap; import android.graphics ...

  3. Gradle task简单使用

    还望支持个人博客站:http://www.enjoytoday.cn task是什么 task是gradle构建脚本的最小运行单元,我们通过在gradle脚本中创建task任务,以期完成某个特定的功能 ...

  4. SoapUI、Postman测试WebService

    之前装了SoapUI,最近装了Postman,分别用它们测试了WebService,下面为用法. 测试的在线WebService(数据来源于中国气象局)Endpoint: http://www.web ...

  5. 查找树ADT--二叉查找树

    二叉树的一个重要应用是它们在查找中的使用. 二叉查找树的性质:对于树中的每个节点X,它的左子树中所有项的值小于X中的项,而它的右子树中所有项的值大于X中的项.这意味着该树所有的元素可以用某种一致的方式 ...

  6. 关于如何清除某个特定网站的缓存---基于Chrome浏览器

    1.清除浏览器缓存 直接在浏览器设置里面清除浏览器的缓存会清除所有网站的缓存信息,这在某些时候是非常不方便的,毕竟不只有测试网站,还会有一些我们不想清除的信息也会被清除掉: 2.通过F12功能去清除浏 ...

  7. 自定义MVC三

    完成t_mvc_book表的增删改查1.通用分页的jar.自定义mvc框架.自定义标签 导入jar.导入之前写好的pageTag.自定义mvc.xml pageTag private static f ...

  8. 01 python的安装

    下载3.7.0版本 然后点击 close  关闭 1-==>搜索输入“cmd”输入 “python -V”并回车. 出现版本说明安装成功.2==>>>> 是提示符3=== ...

  9. CAS你知道吗?原子类AtomicInteger的ABA问题谈谈?

    (1)CAS是什么?  比较并交换 举例1,  CAS产生场景代码? import java.util.concurrent.atomic.AtomicInteger; public class CA ...

  10. c# WF 第5节 窗体的控件

    本节内容: 1:控件在哪里 2:控件怎么添加 3:窗口的显示与隐藏 4:实例单击窗体,出现另一个窗体 1:控件在哪里 视图 --> 工具箱 2:控件怎么添加 第一种:从工具箱直接拉 第二种:在代 ...