问题标签 [crc32]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
11755 浏览

ruby - 如何在 Ruby on rails 中计算 32 位 CRC?

我想在 Ruby on rails 中计算“输入字段值”的 32 位 CRC 值。需要示例代码,请帮助我。

0 投票
2 回答
1185 浏览

gzip - 是否有任何外部工具可以为 gzip -lv 提供匹配的校验和?

当给定 -l 和 -v 选项时,gzip 将给出每个文件的校验和,如下所示:

是否有任何外部工具可以用来导出相同的校验和?

md5sumcksumsum填写类似的角色,但不给出匹配代码(3915528286的十六进制为e962385e)。




申请的额外细节:


我们有一个包含许多大文件的文件系统,并且不断地复制新文件。一些传入的文件匹配已经存在的文件,在这种情况下,我们想简单地硬链接预先存在的文件,以节省磁盘空间。对于解压后的文件,md5sum 帮助我们快速有效地进行比较。另一方面,gzip'd 文件对于相同的数据通常具有不同的 md5sum(由于时间戳或所有者,这与此应用程序无关)。我注意到 gzip 将为内部数据提供校验和,因此对于两个 gzip 文件,我可以简单地比较校验和列表以及大小。

我还想支持将 gzip 文件与“普通”文件进行比较,在这种情况下,我需要一个实用程序,它可以从 gzip 外部生成相同的校验和。我想简单的解决方案是在比较之前总是 gzip 纯文件,但这是我想避免的开销,因为我们的系统目前受到 CPU 时间的瓶颈。

0 投票
2 回答
5385 浏览

python - 在 Python 中计算/验证 bz2 (bzip2) CRC32

我正在尝试计算/验证压缩 bzip2 档案的 CRC32 校验和。

http://en.wikipedia.org/wiki/Bzip2

所以我知道 CRC 校验和在 bz2 文件中的位置,但我将如何验证它们。我应该binascii.crc32()获得哪些 CRC?我已经尝试逐字节计算各种块的 CRC,但没有设法得到匹配。

谢谢你。我将研究 bzip2 源代码和bz2Python 库代码,可能会找到一些东西,尤其是在decompress()方法中。

更新1:

据我所知,块头由以下标签标识。但是微小的 bz2 文件不包含 ENDMARK 文件。(感谢adw,我们发现应该寻找 ENDMARK 的位移位值,因为压缩数据没有填充到字节。)

这是从bzlib2recover.c源头开始的,块似乎总是从第 80 位开始,就在 CRC 校验和之前,应该从 CRC 计算中省略,因为不能将自己的 CRC CRC 为相同的 CRC(你明白我的意思) .

查看计算这个的代码。

更新 2:

bzlib2recover.c没有CRC计算功能,它只是从损坏的文件中复制CRC。但是,我确实设法在 Python 中复制了块计算器功能,以标记bz2压缩文件中每个块的开始和结束位。回到正轨,我发现它compress.c指的是bzlib_private.h.

这些定义也被访问bzlib.cs->blockCRC在 中初始化和更新,在 中bzlib.c完成compress.c。有超过 2000 行 C 代码,这需要一些时间来查看并弄清楚哪些内容可以输入,哪些内容不可以。我也将C标签添加到问题中。

顺便说一下,这里是 bzip2 的 C 源代码http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz

更新 3:

原来bzlib2块 CRC32 是使用以下算法计算的:

dataIn是要编码的数据。

其中 BZ2_crc32Table 定义在crctable.c

对于dataIn = "justatest"返回的 CRC 7948C8CB,使用该数据压缩文本文件后,bz2 文件中的 crc:32 校验和79 48 c8 cb是匹配的。

结论:

bzlib2 CRC32 是(引用crctable.c

由 Rob Warnock 在 comp.compression FAQ 的第 51 节中模糊地派生出来...

...因此,据我了解,不能使用标准 CRC32 校验和计算器预先计算/验证,而是需要bz2lib实现(第 155-172 行bzlib_private.h)。

0 投票
6 回答
3679 浏览

python - 如何在 Python zlib 模块中设置参数

我想编写一个生成 PNG 文件的 Python 程序。我的大问题是生成 CRC 和 IDAT 块中的数据。Python 2.6.4 确实有一个 zlib 模块,但需要额外的设置。PNG规范要求使用zlib的deflate方法压缩IDAT数据,窗口大小为32768字节,但我找不到如何在Python zlib模块中设置这些参数。

至于每个块的 CRC,zlib 模块文档表明它包含一个 CRC 函数。我相信将该 CRC 函数调用为 crc32(data,-1) 将生成我需要的 CRC,但如有必要,我可以翻译 PNG 规范中给出的 C 代码。

请注意,我可以生成 PNG 文件的其余部分以及要为 IDAT 块压缩的数据,我只是不知道在执行初始过滤步骤后如何正确压缩 IDAT 块的图像数据。

编辑:

PyPNG 的问题在于它不会写入文本块。一个小烦恼是必须将图像作为(R,G,B)数据进行处理;我更喜欢直接操作像素的调色板值,然后定义调色板值和颜色数据之间的关联。我也不确定 PyPNG 是否利用图像数据中的 1、2 和 4 位调色板值允许的“压缩”来适应一个字节中的多个像素。

0 投票
2 回答
19975 浏览

c# - 如何在 C#.net 中计算文件的 CRC 值?

我想在 C#.net 中使用 32 位算法计算文件的 CRC 值....

0 投票
1 回答
890 浏览

java - Java图像传输问题

我有一个学校作业,发送一个 jpg 图像,将其分成 100 个字节的组,破坏它,使用 CRC 检查来定位错误并重新传输,直到它最终恢复为原始形式。

它实际上已经准备好了,但是当我检查新图像时,它们会出现错误。

如果有人可以查看下面的代码并找到这个逻辑错误,我将不胜感激,因为我不明白问题是什么,因为一切看起来都很好:S

对于包含所有所需数据(包括照片和错误模式)的文件,可以从以下链接下载:http://rapidshare.com/#!download|932tl2|443122762|Data.zip|739

不要忘记更改图像和错误文件的代码中的路径。

}

0 投票
2 回答
269 浏览

checksum - 良好的校验和可加快搜索速度

我想通过创建我的字符串的校验和索引来加速我的应用程序的搜索。

CRC32 够好吗?我不是为了安全而使用它。就像将字符串表示为哈希(整数/长)索引的一种方式。

0 投票
2 回答
8256 浏览

python - Python CRC-32 问题

我正在编写一个 Python 程序来从 6 GB bz2 文件的中间提取数据。bzip2 文件由可独立解密的数据块组成,因此我只需要找到一个块(它们由魔术位分隔),然后在内存中从中创建一个临时的单块 bzip2 文件,最后将其传递给bz2.decompress 函数。容易,不是吗?

bzip2格式的末尾有一个文件的 crc32 校验和。没问题,binascii.crc32 来救援。可是等等。要校验和的数据不一定以字节边界结束,crc32 函数对整数字节进行操作。

我的计划:在除最后一个字节之外的所有字节上使用 binascii.crc32 函数,然后使用我自己的函数用最后 1-7 位更新计算出的 crc。但是几个小时的编码和测试让我一头雾水,我的疑惑可以归结为这个问题:crc32("\x00") 怎么不是0x00000000?根据维基百科的文章,不应该吗?

您从 0b00000000 开始并用 32 个 0 填充,然后用 0x04C11DB7 进行多项式除法,直到前 8 位中没有剩余,即立即。您的最后 32 位是校验和,怎么可能不全为零?

我在 Google 上搜索了答案并查看了几个 CRC-32 实现的代码,但没有找到任何线索说明为什么会这样。

0 投票
5 回答
3071 浏览

c# - 如何对内存中加载的可执行文件进行 CRC 检查?

出于保护原因,我想运行一个线程来检查当前可执行文件的内存映像。任何想法如何在当前内存可执行文件(WinAPI 或 .NET 方式)上执行 CRC?我的应用程序是用 .NET 编写的。

0 投票
2 回答
5900 浏览

security - CRC和散列方法(MD5、SHA1)的区别

CRC 和哈希方法都可以用来验证原始数据的完整性。为什么现在大多数系统都使用哈希方法?