问题标签 [crc]

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 回答
302 浏览

javascript - Genuine unique identification of PCs in html based websites

Imagine a website that uses google gears as a storage mechanism for various application level data. This data is intermittently replicated with a server using Asynchronous webservice calls while the application is active.

The problem lies in the subscription monitoring mechanism. Imagine a subscription system to this service based on unique PC’s. How does a webservice uniquely identify a PC (or more specifically a webbrowser) that is synchronising data with it?

My natural first idea was storing a GUID in the local database per machine and sending it off with the request but if one looks at the google gears storage documentation you discover that the database is unencrypted and can easily be tampered with (attaching to the sqllite file is all that is required and can be accomplished using various tools).

What I’ve been thinking recently is surely there is someway to calculate a signature that is repeatable per machine yet unique using only javascript? So far an implementation of this has eluded me (if only navigator.userAgent.uniqueID existed – although wouldn’t do much for privacy).

Last thought is obviously to write a ActiveX control and firefox plugin to provide this functionality but this would be a huge pain in the ass...

Any insights would be appreciated.

0 投票
2 回答
44574 浏览

md5 - 我应该使用什么校验和算法?

我正在构建一个系统,该系统需要能够找到字节块是否已更新。我认为我应该计算它的校验和,然后存储它并稍后计算相同的校验和,以查看 blob 是否已更新,而不是存储整个 blob(它们最多可达 5MB)。

目标是最小化以下内容(按此顺序):

  • 校验和的大小
  • 计算时间
  • 冲突的可能性(即使内容已被修改,也会发生 2 个相同的校验和)。

我们的系统可以接受不超过 1/1,000,000 的碰撞。关心的不是安全性,而是简单的更新/错误检测,所以很少发生冲突是可以的。(这就是为什么我把它放在最后的原因)。

此外,我们不能自己修改文本块。

当然md5crc或者sha1想到,如果我想要一个快速的解决方案,我会去的。但是,不仅仅是一个快速的解决方案,我还在寻找可以比较不同方法以及利弊的内容。

0 投票
1 回答
11755 浏览

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

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

0 投票
1 回答
1307 浏览

ruby-on-rails - bignum 太大而无法转换为“长”错误

执行以下代码时出现此错误

有人有解决这个问题的方法吗?

0 投票
1 回答
198 浏览

asp.net - 关键 Web 服务调用是否需要 CRC?

我有存储在本地计算机上并使用 Web 服务定期复制的数据。该数据对于该程序的应用至关重要,并且与业务交易相关。

以此类推。

在将数据发送到 Web 服务时,我应该使用某种类型的 CRC 检查,还是由 TCP 协议本身充分处理?

编辑:只是为了清楚数据不会从客户端删除,直到服务器确认接收并且我在我的网络服务中使用强类型参数但我更多地考虑“损坏”数据(尽管在所有情况下,但字符串理论上应该失败数据类型转换)。

0 投票
4 回答
8280 浏览

java - Java CRC32:与 C# 中的 CRC 不同

我必须将文件与 java 与 C# 脚本提供的 CRC32 代码进行比较。当我用 java.util.zip.CRC32 计算 CRC32 时,结果完全不同......

我的猜测是 C# 脚本的 polynom = 0x2033 与 zip.CRC32 中使用的不一样。是否可以设置多项式?或者任何关于计算 CRC32 的 java 类的想法,您可以在其中定义自己的多项式?

更新:问题不是多项式。这在 C# 和 Java 之间是一样的

这是我的代码,也许我读取文件的方式有问题?

非常感谢,弗兰克

0 投票
2 回答
1185 浏览

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

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

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

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




申请的额外细节:


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

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

0 投票
3 回答
18352 浏览

microcontroller - CRC16 校验和:HCS08 vs. Kermit vs. XMODEM

我正在尝试将 CRC16 错误检测添加到摩托罗拉 HCS08 微控制器应用程序中。不过,我的校验和不匹配。一个在线 CRC 计算器既提供了我在 PC 程序中看到的结果,也提供了我在微电脑上看到的结果。

它将 micro 的结果称为“XModem”,将 PC 的结果称为“Kermit”。

这两个古老的协议指定使用 CRC16 的方式有什么区别?

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 投票
2 回答
1716 浏览

networking - 如果数据使用的是校验和的 TCP,ftp 协议为什么有时会产生传输错误?

每隔一段时间,通过 ftp 下载(尤其是大)文件会产生错误。我猜这也是所有主要网站都在下载外部校验和的同时发布的部分原因。

如果 ftp 通过 TCP,这怎么可能呢? TCP 内置了校验和,如果数据传输损坏,则重新发送数据?

有人可能会争辩说,这是由于 TCP 协议中 CRC 的长度很短(我认为是 16 位,或者类似的东西),并且冲突发生得太频繁了。但是1)要做到这一点,不仅必须存在CRC冲突,而且随机网络错误必须同时修改数据包中的CRC和数据包本身,以便CRC对新数据包有效。 . 即使使用 16 bitCRC,也有那么可能吗?2)在浏览网页时似乎没有太多错误,也通过 TCPIP。