#校验和 #CRC #哈希

pruefung

使用纯 Rust 实现的校验和,支持 no_std,实现 Hasher 特性

3 个不稳定版本

使用旧的 Rust 2015

0.2.1 2017年11月23日
0.2.0 2017年7月24日
0.1.0 2017年7月20日

2144算法 中排名

Download history 94/week @ 2024-03-13 173/week @ 2024-03-20 106/week @ 2024-03-27 150/week @ 2024-04-03 129/week @ 2024-04-10 190/week @ 2024-04-17 279/week @ 2024-04-24 169/week @ 2024-05-01 181/week @ 2024-05-08 154/week @ 2024-05-15 90/week @ 2024-05-22 226/week @ 2024-05-29 188/week @ 2024-06-05 214/week @ 2024-06-12 257/week @ 2024-06-19 121/week @ 2024-06-26

801 每月下载量
3 个 crate 中使用(通过 cardano-message-signing

MIT 许可证

43KB
877

pruefung

纯 Rust 实现的校验和。

TravisCI Source Crate Documentation CargoMake Changelog SayThanks

此库尚未提供稳定的 API!

用法

将此 crate 添加到 Cargo.toml

[dependencies]
pruefung = "^0.1.0"

查看 总和 部分,以查看所需的最小版本,具体取决于您希望使用的算法。

所有校验和都使用与 hashes crate of the RustCrypto 项目的相同逻辑实现,实现 digest::Digestcore::hasher::Hasher 特性(输出小于 64 位)。

然后,要计算一个哈希,例如一个 CRC32(以太网标准)

extern crate pruefung;
use std::hash::Hasher;

let mut hasher = pruefung::crc32::CRC32();   // Instantiate a hasher
let data = b"Hello, world !";

hasher.write(data);                          // Feed the hasher
hasher.write("String data".as_bytes());      // (possibly multiple times)

let hash = hasher.finish();                  // Consume the hasher
println!("Result: {:x}", hash)               // print the result as native hex

依赖项

此 crate 本身是 no_std,但提供 digest::Digest 实现,以便于使用和与 hashes crate 集成。然而,可以通过禁用 crate 的默认功能来删除这些绑定,将以下行添加到您的 Cargo.toml

[dependencies.pruefung]
version = "^0.1.0"
default-features = false

总和

此 crate 的最新版本实现了以下校验和

算法 实现为
Adler32 0.1.0 ::adler32::Adler32
BSD 校验和 0.2.0 ::bsd::Bsd
CRC32 0.2.0 ::crc::crc32::CRC32
CRC32C 0.2.0 ::crc::crc32::CRC32C
Fletcher16 0.1.0 ::fletcher16::Fletcher16
FNV0-32 0.2.0 ::fnv::fnv32::Fnv32z
FNV1-32 0.2.0 ::fnv::fnv32::Fnv32
FNV1a-32 0.2.0 ::fnv::fnv32::Fnv32a
FNV0-64 0.2.0 ::fnv::fnv64::Fnv64z
FNV1-64 0.2.0 ::fnv::fnv64::Fnv64
FNV1a-64 0.2.0 ::fnv::fnv64::Fnv64a
SysV 校验和 0.1.0 ::sysv::SysV
UNIX 校验和 0.2.0 ::unix::Unix

这些校验和**不**是加密安全的。它们不应用于除了对意外修改的数据进行验证之外的其他用途:攻击者可以轻易地伪造一个文件以通过这些校验和中的任何一个!对于安全的校验和,请查看由RustCrypto团队实现的哈希

为什么是pruefung

我开始这个项目的时候在瑞士。尽管我并不真正会说德语。但是zyklische-redundanzprüfung的缩略版本似乎是一个不错的名字,而不是另一个校验和,cksum,checksums,crc等crate。

依赖项

~70KB