1 个稳定版本
1.0.0 | 2022年1月3日 |
---|
1643 在 算法 中
每月下载量 8,046
用于 rs-matter
12KB
189 行
Verhoeff 算法,用于数字校验和
Verhoeff 算法的实现。
这种校验算法并不特别常见(更简单且略逊一筹的 Luhn 算法被更广泛使用,例如在信用卡号码中),但它确实得到了一些使用;例如,印度的 Aadhaar 生物识别身份系统使用 12 位数字作为身份证号码,最后一位是 Verhoeff 校验和。
背景阅读: https://en.wikipedia.org/wiki/Verhoeff_algorithm
示例
use verhoeff::Verhoeff;
assert_eq!("12345".calculate_verhoeff_check_digit(), 1);
assert!(verhoeff::validate(&[1, 2, 3, 4, 5, 1]));
assert!(!"123456".validate_verhoeff_check_digit());
use verhoeff::VerhoeffMut;
let mut digits = vec![1, 2, 3, 4, 5];
digits.push_verhoeff_check_digit();
assert_eq!(digits, [1, 2, 3, 4, 5, 1]);
Cargo.toml 使用和功能
标准
[dependencies]
verhoeff = "1"
禁用 std
功能以获取 #![no_std]
,但保留 alloc
以防止丢失任何功能
[dependencies]
verhoeff = { version = "1", default-features = false, features = ["alloc"] }
禁用 std
功能而不重新启用 alloc
,因此丢失了 String
和 Vec<u8>
的 VerhoeffMut
(push_verhoeff_check_digit
) 实现
[dependencies]
verhoeff = { version = "1", default-features = false }