问题标签 [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 投票
21 回答
473555 浏览

java - 在 Java 中获取文件的 MD5 校验和

我希望使用 Java 来获取文件的 MD5 校验和。我真的很惊讶,但我找不到任何显示如何获取文件的 MD5 校验和的东西。

它是如何完成的?

0 投票
5 回答
5252 浏览

file - 在不考虑标题的情况下计算音频文件的校验和

我想以编程方式创建音频文件(MP3、Ogg Vorbis、Flac)的 SHA1 校验和。要求是即使标头(例如 ID3)发生变化,校验和也应该是稳定的。
注意:音频文件没有 CRC

这是我现在尝试的:

1) 使用 Perl 和MPEG::Audio::Frame读取 + 散列所有 MPEG 帧

2) 使用 Python 和libmad (pymad)解码 + 散列所有 MPEG 帧

3) 使用mp3cat

然而,这些方法都没有提供稳定的校验和。即,在某些情况下,使用picard重新标记文件后校验和会发生变化。

是否有任何图书馆已经提供了我想要的东西?
我不关心编程语言...

更新: 我进一步调试了这个案例。libmad 校验和不一致似乎发生在 libmad 出现一些解码错误的情况下,例如"Huffman data overrun (0x0238)"。由于这确实发生在许多 mp3 文件上,我不确定它是否真的表明文件损坏......</p>

0 投票
2 回答
8664 浏览

checksum - 从数据中确定 CRC 算法 + CRC - 嵌入式应用程序。

我有一组受 16 位校验和保护的数据,我需要更正这些数据。校验和位置是已知的,计算它们的确切区域以及用于计算它们的确切算法是未知的。16 位,LSB 在前。我怀疑它是某种 16 位 CRC,但我无法找到实际计算校验和的代码。

例子:

校验和存储在 4E 和 64 处。我不知道它们是从每个数据段开头的第一个字的偏移量开始计算的,还是之后开始计算的,还是从整个范围开始计算的。我尝试了许多常见的 CRC 算法和多项式,但都没有成功。此应用程序没有可用的参考资料或规范。

为了比较,这里是另一个具有不同 CRC 的数据部分。

我的问题是,任何人都可以识别算法吗?有什么方法可以从数据和 CRC 计算 CRC 多项式和其他因素?

谢谢!

编辑:

在我的反汇编中搜索常见的 CRC16 多项式 0xA001 发现了这个函数:

0 投票
9 回答
17495 浏览

java - 轻量级校验和算法的好选择?

为了保持一致性,我发现自己需要为一串数据生成校验和。广义的想法是客户端可以根据接收到的有效负载重新生成校验和,从而检测传输过程中发生的任何损坏。我隐约知道这种事情背后有各种各样的数学原理,如果你自己尝试滚动它,很容易出现细微的错误使整个算法失效。

因此,我正在寻找有关具有以下标准的散列/校验和算法的建议:

  • 它将由 Javascript 生成,因此需要相对较轻的计算量。
  • 验证将由 Java 完成(尽管我看不出这实际上是一个问题)。
  • 它将采用中等长度的文本输入(URL 编码的 Unicode,我认为是 ASCII);通常大约 200-300 个字符,并且在所有情况下都低于 2000 个。
  • 输出也应该是 ASCII 文本,越短越好。

我主要对轻量级的东西感兴趣,而不是获得绝对最小的碰撞可能性。我会天真地想象一个八字符的哈希会适合这个吗?我还应该澄清,如果在验证阶段没有发现损坏,这不是世界末日(而且我确实意识到这不会 100% 可靠),尽管我的其余代码对每个人来说效率明显较低漏掉的损坏条目。

编辑 - 感谢所有的贡献。我选择了 Adler32 选项,考虑到它在 Java 中得到原生支持,在 Javascript 中非常容易实现,两端计算速度快,输出 8 字节,完全符合我的要求。

(请注意,我意识到网络传输不太可能对任何损坏错误负责,并且暂时不会在这个问题上袖手旁观;但是添加校验和验证可以消除一个故障点,意味着我们可以专注于其他领域如果这种情况再次发生。)

0 投票
13 回答
61776 浏览

language-agnostic - 哈希码和校验和 - 有什么区别?

我的理解是哈希码和校验和是相似的东西 - 一个数值,为数据块计算,相对唯一。

即两个数据块产生相同数字散列/校验和值的概率足够低,以至于可以忽略应用程序的目的。

那么我们是否对同一事物有两个词,或者哈希码和校验和之间是否存在重要区别?

0 投票
20 回答
221513 浏览

windows - 为我的机器上的文件计算校验和的最佳方法是什么?

我在一台 Windows 机器上,我想在我刚得到的 MySQL 发行版上运行校验和。看起来有要下载的产品、不受支持的 Microsoft 工具以及可能的其他选项。我想知道是否对使用最佳工具达成共识。这可能是一个非常简单的问题,我以前从未运行过校验和例程。

0 投票
1 回答
656 浏览

generator - 正确计算 IPV6 校验和的 libnet

我最近开始使用 libnet 并使用它来生成 IPV6 数据包。我对编程很陌生,但是,我对这个库很满意。

我有一个问题。似乎 libnet 当前无法正确计算 IPV6 数据包的校验和。作为编程新手,我还没有能力解决这个问题(虽然我正在学习,所以有一天我可以)。

我很好奇,有没有人运行过可以正确执行此操作的库版本?

谢谢!

0 投票
2 回答
6597 浏览

php - PHP中的CRC8检查

如何在 PHP 中生成 CRC-8 校验和?

0 投票
2 回答
1186 浏览

algorithm - 我应该使用什么作为基数 31 值的校验位算法?

我正在使用以下一组值来创建一个 9 字符长的 base 31 值:
0123456789ABCDEFGHJKLMNPQRTUWXY

我正在考虑修改 Luhn 算法以使用我的基础。

我的问题是:

在以 10 为底的情况下,Luhn 算法将每个值在偶数位置加倍,然后如果结果大于 10,则将结果的各个数字相加。

我应该仍然将我的偶数位置值加倍,还是使用更高的乘数?

我试图防止转置字符、丢失字符、多余字符和简单的错误数字。

0 投票
1 回答
189 浏览

imap - imap - 如何验证是否传输了完整的消息?

IMAP 协议是否提供任何方法来验证/验证完整的消息是否已从服务器传输到本地客户端?即是否有任何等效的 ETag / MD5 或其他校验和?