#numbers #checksum #algorithm #digit

no-std verhoeff

Verhoeff 算法,用于数字校验和

1 个稳定版本

1.0.0 2022年1月3日

1643算法

Download history 1770/week @ 2024-03-14 2695/week @ 2024-03-21 2199/week @ 2024-03-28 2073/week @ 2024-04-04 1885/week @ 2024-04-11 2766/week @ 2024-04-18 3364/week @ 2024-04-25 1906/week @ 2024-05-02 1691/week @ 2024-05-09 1980/week @ 2024-05-16 1145/week @ 2024-05-23 2437/week @ 2024-05-30 2437/week @ 2024-06-06 2046/week @ 2024-06-13 1970/week @ 2024-06-20 1201/week @ 2024-06-27

每月下载量 8,046
用于 rs-matter

BlueOak-1.0.0 OR MIT OR Apache-2.0

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,因此丢失了 StringVec<u8>VerhoeffMut (push_verhoeff_check_digit) 实现

[dependencies]
verhoeff = { version = "1", default-features = false }

无运行时依赖

功能