You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用hashlib复现wand的纯像素流SHA-256校验和计算?

问题:用hashlib复现Wand/ImageMagick的图片签名计算结果

我做了两组图片哈希计算操作:

第一组:基于Wand/ImageMagick的计算

使用Wand库计算图片签名:

import wand                     # 用户自行安装
img = wand.image.Image(filename=f)
print(img.signature)

该方式的计算结果与直接在本地Shell调用ImageMagick的结果完全一致:

import subprocess              # Python内置模块
cmd = f'identify -format \'%#\' {f}'
print(str(subprocess.check_output(cmd, shell=True),'utf-8'))

第二组:基于hashlib的文件哈希计算

直接读取文件内容计算SHA-256哈希:

import hashlib                  # Python内置模块
sha_256 = hashlib.sha256()
sha_256.update(open(f,'rb').read() )
print(sha_256.hexdigest())

结果对比

针对某一JPG文件f,两组方式得到的结果不同:

  • 第一组(Wand/ImageMagick)结果:
    bcabffbb94896989099e5d2c11989468567a5f9ca46f12aecc2448079b6c77cb
  • 第二组(hashlib)结果:
    6964a03b39bd71d8cff04cf075d008a93cd3a4973c95edf1e6cfa8c1f5eeb3e0

推测原因

hashlib是直接读取文件的全部字节内容(包含元数据、EXIF等额外信息),而Wand/ImageMagick的签名仅基于图片的纯像素流计算。

需求

需要在Python 3.9.0中,仅使用hashlib复现Wand/ImageMagick的计算结果,寻求技术实现方案。


内容的提问来源于stack exchange,提问作者Cbhihe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:55:25