Python 生成文件或字符串的 sha256

例子当然要简洁,废话当然要少说,这块主要以 sha256 为例来进行说明,当然你可以选择 sha512 、md5 等其他算法!

文件的 sha256

这里唯一要注意的一点:文件一定要以二进制的形式打开读取!

import hashlib

path = '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 os

path = '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 * 1024
    algorithm.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

校验的话就是多了一层比较哈希字符串的逻辑,这个我就不多啰嗦了!

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生成文件SHA256哈希值,你可以使用 hashlib 库。首先,你需要以二进制形式打开并读取文件。接下来,构造一个 SHA256 哈希生成器。然后,通过生成器的 update 方法传入读取的文件数据。最后,可以使用 digest 或 hexdigest 方法产生哈希值。下面是一个示例代码: ```python import hashlib path = 'setup.py' algorithm = hashlib.sha256() with open(path, 'rb') as f: algorithm.update(f.read()) sha256_hash = algorithm.hexdigest() print(sha256_hash) ``` 这段代码将计算并打印出文件 "setup.py" 的 SHA256 哈希值。注意,你可以根据需要修改文件路径和使用的哈希算法。123 #### 引用[.reference_title] - *1* *2* [Python 生成文件字符串sha256](https://blog.csdn.net/TomorrowAndTuture/article/details/121356204)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [Python生成字符串文件的MD5和SHA256哈希值的方法](https://blog.csdn.net/qq_21264377/article/details/118933271)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值