问题标签 [checksum]

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

checksum - 如何计算 REBOL 3 模块校验和?

在 REBOL 3 中可以计算 SHA1 模块校验和。当 REBOL 加载模块时,它会将其校验和与加载模块的校验和进行比较,如果两者不匹配,则会生成错误,即。access error: invalid checksum (tampered file).

无论我如何尝试,我似乎都无法创建 REBOL 3 喜欢的模块校验和。当我查看 的文档时import,它的改进/check说是使用checksum/secure. mold/flat我已经尝试了各种变体,但没有运气:

等等。它都不起作用。一定有一些简单的事情我做错了。

0 投票
3 回答
2799 浏览

c# - 为什么计算出的校验和与通过串口发送的 BCC 不匹配?

我有一个用 C# 编写的小应用程序,它在 SerialPort 上侦听以获取信息。信息以:STX + data + ETX + BCC. 然后我们计算传输数据包的 BCC 并进行比较。功能是:

它似乎或多或少地起作用。它准确地不包括 STX 或 BCC,并且准确地将 ETX 包括在其计算中。它似乎大部分时间都在工作,但是我们至少有两台机器正在运行它,这两台机器都是 Windows 2008 64 位,其中 BCC 计算永远不会累加。从最近的日志中提取一个字节 20 被发送,我计算出 16 和一个 11 被发送的地方,我计算出 27。

我对这里发生的事情感到非常困惑。我在这里是否缺少 64 位或 Windows 2008“陷阱”?任何帮助甚至疯狂的想法都将不胜感激。

编辑:

这是读取数据的代码:

DataReceived()函数获取该字符串并将其附加到全局StringBuilder对象。然后它一直作为一个字符串构建器,直到它被传递给这些不同的函数,此时它.ToString()被调用。

EDIT2:更改了代码以反映我更改的对字节/字节数组而不是字符串进行操作的例程。

EDIT3:我还没有弄清楚这一点,而且我得到了更多结果完全不一致的测试数据(发送校验和的数量每次都不同,没有模式)。感觉就像我只是在计算校验和错误,但我不知道如何。

0 投票
1 回答
315 浏览

c# - 是否有任何与 word 文档相关的元数据?

我正在尝试通过在二进制级别打开来生成 word 文档的校验和。我生成文档的校验和。将文档复制到其他位置。当我在新位置生成校验和时,虽然我没有更改文档的内容,但我得到了一个不同的值。即使我将文档复制回同一位置,校验和也会有所不同。其他文件类型(例如 .txt 或 .pdf 文件)不会发生这种情况。所以这证明校验和生成中没有错误。但我的感觉是,通过以二进制级别打开一个 .doc 文件,我正在为不同的文档元数据生成校验和。我对吗?请赐教。

0 投票
3 回答
35300 浏览

sql-server - 在 SQL Server 中计算表的哈希或校验和

我正在尝试为 SQL Server 2008 中的整个表计算校验和或哈希。我遇到的问题是该表包含 XML 列数据类型,它不能被校验和使用,必须转换为 nvarchar第一的。所以我需要把它分解成两个问题:

  1. 计算一行的校验和,架构在运行前是未知的。
  2. 计算所有行的校验和以获得完整的表校验和。
0 投票
3 回答
1362 浏览

c - 互联网校验和的位移

这几乎可以肯定是一个非常愚蠢的问题,但由于某种原因,我在互联网校验和计算方面遇到了麻烦。所有的算法基本上都是这样的:

除了这条线,我什么都清楚:

它看起来就像在将前 16 位添加到后 16 位之前的行,在前 16 位中留下全零。如果是这种情况,那么 sum >> 16 现在不会等于零吗?如果是这样,为什么那条线在那里?

还是我(很可能)今天完全精神失常?

0 投票
9 回答
1995 浏览

duplicates - 在不存储校验和的情况下检查重复文件

例如,您有一个应用程序处理由不同客户端发送的文件。客户端每天发送大量文件,您将这些文件的内容加载到您的系统中。这些文件具有相同的格式。给你的唯一限制是你不能运行同一个文件两次。

为了检查您是否运行了特定文件,请创建文件的校验和并将其存储在另一个文件中。因此,当您获得一个新文件时,您可以创建该文件的校验和,并与您运行和存储的其他文件的校验和进行比较。

现在,包含您迄今为止运行的所有文件的所有校验和的文件变得非常非常大。搜索和比较花费了太多时间。

注意:该应用程序使用平面文件作为其数据库。请不要建议使用 rdbms 之类的。目前根本不可能。

您认为还有其他方法可以检查重复文件吗?

0 投票
4 回答
906 浏览

communication - 构建字节协议的技巧

我正在设备之间传输数据,我必须将协议编程为字节数组。

在低级别构建协议时有什么技巧吗?.. 例如:

  • 使用 2 字节标头,在数据字节之前发送消息的长度。
  • 使用 CRC/数据验证方案。(我该怎么做?任何简单的校验和?)
0 投票
2 回答
22076 浏览

python - 校验和 udp 计算 python

我想计算要发送的 UDP 标头数据包的校验和:

所以我需要加入这个 utf-16(不是问题)并计算这个特定数据包的校验和。我怎样才能做到这一点?

谢谢!

编辑:是的,它是 ICMPv6 数据包的 IPv6 标头,无论如何我想知道的是公式,以及它是如何工作的。

我再举一个 ICMP ping echo (v4) 数据包的例子:

谢谢。

0 投票
4 回答
13131 浏览

perl - 如何在 Perl 中对较大的十六进制值求和?

我正在迭代一组 32 位十六进制字符串(“DEADBEEF”、“12345678”等),并试图将它们相加以形成 32 位校验和。假设$temp在下面的示例中变量加载了一些十六进制字符串。

前几个值是“7800798C”、“44444444”和“44444444”。输出是:

校验和:7800798C
校验和:BC44BDD0
校验和:FFFFFFFF
校验和:FFFFFFFF

ETC..

正如你所看到的,前两个总和是正确的,然后它似乎饱和了。我是否遗漏了有关 Perl 变量大小限制的内容?

编辑:这是脚本的实际输出(字符串是十六进制字符串,值是该字符串的十进制转换,校验和是结果输出):

0 投票
3 回答
643 浏览

delphi - 使用 Delphi 6 编译两次并在二进制文件上获得相同的校验和

出于二进制/源代码验证的目的,我希望能够相隔两周在同一台计算机上进行两次编译,并使二进制文件相同,从而通过一些校验和测试。

到目前为止,我发现编译器很可能会将时间戳写入二进制文件中。我可以通过比较这个 msdn 文章中的 dumpbin /rawdata 结果来解决这个问题。

http://support.microsoft.com/kb/164151

然而,dumpbin 结果在十几个地方仍然存在差异,并且差异似乎仍然是某种时间戳(例如从 A1 73 变为 C4 76)。

我假设这是 delphi 编译器放入代码/数据部分的时间戳,但我找不到发生这种情况的位置或如何将其关闭。摆弄各种编译器/链接器选项并没有改变这种行为。

任何帮助将不胜感激。