2个不稳定版本
0.4.0 | 2022年10月31日 |
---|---|
0.3.0 | 2022年10月24日 |
#2213 in 算法
70KB
1K SLoC
checksum-tapestry 校验和包
这是一个包含校验和算法选择的包。它包括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 的原因。