#checksum #crc #algorithm #adler32 #fletcher16

checksum-tapestry

集合了校验和算法和示例

2个不稳定版本

0.4.0 2022年10月31日
0.3.0 2022年10月24日

#2213 in 算法

MIT 许可证

70KB
1K SLoC

checksum-tapestry 校验和包

build

这是一个包含校验和算法选择的包。它包括CRC、Fletcher16和Adler32,

它包括所有算法的测试。测试来自各种来源。

对于CRC代码,crc-catalog包提供了一个常见CRC参数的目录。该包使用的参数模型在

Williams, Ross N. "A Painless Guide to CRC Error Detection Algorithms", Rocksoft Pty Ltd., 1993, crc_ross.pdf, http://ross.net/crc/download/crc_v3.txt

Rui Hu和Akhil Velagapudi的crc包也提供了有助于构建此库的代码模式。

此文档还提供了对参数含义的良好描述。

对于Adler32代码,Go哈希包提供了测试用例。

几个关于循环冗余校验和Adler、Fletcher校验的维基百科页面也非常有用。

测试用例包括常见CRC多项式的各种值。这包括zlib中使用的默认crc32。

用法

此包提供文档和示例,展示如何使用不同的校验和算法。所有校验和实现都使用一个名为Checksum的通用trait,该trait提供两个函数:compute和update。compute接受一个u8切片,并计算整个切片的校验和。update允许基于单个u8值进行滚动更新。

安全和安全性

这些算法不针对侧信道攻击。

这些校验和实现尚未由第三方审核,用于安全关键应用。虽然它们提供了一些测试覆盖率,但测试源本身尚未经过检查。

此包可以作为构建基于测试的校验和库的良好基础,但它不应被视为权威的。

示例

此包还提供了一些示例,展示如何使用校验和以及每个的参数。

Adler-32在短消息上的弱点可视化

$ cargo run --example adler32_output_space_use

参考

crc_v3.txt Ross Williams CRC指南是许多当前CRC库API的权威来源。它描述了哪些参数包含其中以及它们需要的历史原因。

komrad36 本存储库中的 README.md 文件提供了一个易于理解的循环冗余校验概述。它提供了比网上其他教程和参考资料更小、更易于处理的示例。

sarwate Dilip Sarwate 是最早描述使用表预计算循环冗余码的方法的论文之一。

https://datatracker.ietf.org/doc/rfc3385/ 在错误模型的背景下提供了关于 CRC 选择的分析。概述了选择 CRC32C 作为 iSCSI 的原因。

无运行时依赖