首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中计算IDAT校验和

在python中计算IDAT校验和
EN

Stack Overflow用户
提问于 2016-02-19 01:07:11
回答 1查看 903关注 0票数 0

我绞尽脑汁,绞尽脑汁想弄清楚为什么这个方法行不通。我正在尝试编写一些代码来验证IDAT校验和,并在使用示例良好图像进行测试时进行测试。我的代码是:

代码语言:javascript
运行
复制
import binascii
import zlib

filename="sample.png";
with open(filename, 'rb') as f:
    data=f.read()

index=data.find("IDAT");
print index;

idat=data[index:index+0x200+4]
print "IDAT: "+binascii.hexlify(idat)

crc=data[index+0x200+4:index+0x200+8]
print "CRC: "+binascii.hexlify(crc)

ccrc=zlib.crc32(idat)
print"Calculated CRC: "+hex(ccrc)

它给出的输出是:

代码语言:javascript
运行
复制
python crc.py
190
IDAT: 494441546881edd6cd6...........<snip>
CRC: ce1f4dd7
Calculated CRC: -0x31e0b229

正在从正确的位置读取校验和。正在对IDAT标头和数据进行校验和。我已经用其他工具验证了从文件中读取的校验和是正确的。根据我的研究,zlib的默认设置应该会给出正确的CRC32输出。

遗漏了什么?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-02-19 02:04:59

哇,我是个笨蛋!我之前检查过这个,当我有错误的时候,然后认为我在这个例子中已经检查过了。由于整数签名,我只需要用0xffffffff & it。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35487953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档