Python 生成文件或字符串的 sha256
例子当然要简洁,废话当然要少说,这块主要以 sha256 为例来进行说明,当然你可以选择 sha512 、md5 等其他算法!
文件的 sha256
这里唯一要注意的一点:文件一定要以二进制的形式打开读取!
import hashlibpath = 'setup.py'
algorithm = hashlib.sha256() # hashlib.sha512() or hashlib.md5()
with open(path, 'rb') as f:algorithm.update(f.read())
print(algorithm.hexdigest(), path)
如果读取的文件比较大的话,可以尝试分片读取:
import hashlib
import ospath = 'setup.py'
algorithm = hashlib.sha256()
size = os.path.getsize(path)
with open(path, 'rb') as f:while size >= 1024 * 1024:algorithm.update(f.read(1024 * 1024))size -= 1024 * 1024algorithm.update(f.read())
print(algorithm.hexdigest(), path)
74765dc4880fe7759c0206e2bcfe30c8d3e8e305526434b4c62d6c6ed2141c12 setup.py
可以看到,结果和直接在 Linux 上使用 sha256sum命令(如果使用 sha512 或 md5 算法,在 Linux 请用 sha512sum 或 md5sum 生成哈希码)得到的结果一致:
[root@master test]# sha256sum setup.py
74765dc4880fe7759c0206e2bcfe30c8d3e8e305526434b4c62d6c6ed2141c12 setup.py
字符串的 sha256
这里唯一要注意的一点:字符串一定要先编码,即使是空字符串也不例外(和文件要以二进制形式读取的原因类似)!
import hashlib
text = 'hello world'
algorithm = hashlib.sha256()
algorithm.update(text.encode(encoding='UTF-8'))
print(algorithm.hexdigest(), text)
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 hello world
不然的话会报错:
Traceback (most recent call last):File "D:/Projects/insight-tools-rest/test.py", line 4, in <module>algorithm.update(text)
TypeError: Unicode-objects must be encoded before hashing
校验的话就是多了一层比较哈希字符串的逻辑,这个我就不多啰嗦了!
Python 生成文件或字符串的 sha256相关推荐
- Python计算文件或字符串的MD5/SHA
本文章讲如何通过Python实现计算文件或字符串的MD5, SHA1, SHA224, SHA256, SHA384, SHA512值. 原文:https://blog.zeruns.tech/arc ...
- 使用 Python 生成文件夹目录结构
新建一个 python 文件,复制以下代码,运行时指定一下 ignore_list 和 direction_path 即可快速生成文件夹目录结构图. import re from pathlib im ...
- python生成文件夹以及压缩文件夹
''' @Description 生成文件夹 @params (path) 文件夹路径 @params (title) 文件名称 @params (content) html 文件代码 @params ...
- python生成文件夹和删除文件夹
import os import shutil 生成文件夹 def tp(tp=None): os.makedirs(""+tp) # 生成文件夹位置的路径 删除文件夹 os.re ...
- python生成文件夹并向文件夹写文件_python - 文件练习生成100个MAC地址写入文件
需求: 生成100个MAC地址并写入文件中,MAC地址前6位(16进制)为01-AF-3B 解题思路: 要求生成这样格式的mac地址:01-AF-3B-xx-xx-xx 首先生成-xx格式,16进制组 ...
- python 查找文件内容字符串位置_python 查找目录下 文件名中含有某字符串的文件...
有坑的地方: 若是代码写成这样: [( os.path.abspath(x)) for x in os.listdir(startPath) ] 此代码只能用于当前目录下,listdir列出的都只是文 ...
- python打印文件到字符串_请问Python打印字符串到文本文件
慕哥6287543 如果您正在使用Python 3.然后你可以用打印功能 :your_data = {"Purchase Amount": 'TotalAmount'} print ...
- python生成文件怎么在文件名后面加1而不是覆盖_python脚本——将同一个文件夹下的相同文件名的不同文件分开...
需求:一个文件夹下有相同文件名的两种格式的文件,且数量相等,我的两种文件格式是:jpg和tif.rbox.txt,想要把这两种文件分别放到两个文件夹里面 例如:将789文件夹下的两种文件分别放到456 ...
- python生成回文字符串_回文字符串最长回文子串和子序列 - Python
Palindrome 回文字符串就是指从前往后和从后往前读,都是一样的,比如"aabcbaa". 注意区分子串和子序列,子串是连续的,子序列可以不连续 题型1:判断字符串是否为回文 ...
最新文章
- HTTP长连接服务器端推技术
- Kmeans++、Mini-Batch Kmeans、Bisecting Kmeans、K中心点(K-Medoids)算法、K众数聚类、核K均值聚类
- 改动Androidproject的名称(非Eclipse重命名)
- 金融风控实战——信贷评分卡
- [NOIP1999] 普及组
- Java黑皮书课后题第3章:*3.34(几何:线段上的点)编程练习题3.32显示了如何测试一个点是否在一个无限长的直线上。修改3.32测试一个点是否在一个线段上。编写程序,输入三个点坐标,显示在否线段
- hoj 13788 Dwarves
- 如何快速在Github找到你想要的东西
- 大数据每周分享第 008 期
- python调用bat_python windows 远程执行bat
- tornado web高级开发项目
- 探究Lucene计算权重的过程
- JSP(九大内置对象)
- caffe自带可运行的两个例子:mnist和cifar10
- 【Web前端】笔试题含解析
- 解除计算机屏保密码设置密码,Win10锁屏密码怎么取消掉?Win10系统取消锁屏密码的两种方法...
- Anbox 容器管理服务
- 被孙杨遮挡LOGO的安踏,到底做错了什么?
- 张一鸣的“成事哲学”:取势、明道、优术、践行、合众
- 零基础 Python学习