8个稳定版本
使用旧的Rust 2015
2.0.3 | 2020年12月27日 |
---|---|
2.0.2 | 2020年6月6日 |
2.0.1 | 2020年4月22日 |
2.0.0 | 2017年9月16日 |
1.0.1 | 2016年8月19日 |
2014 在 算法 中
每月824次下载
用于 5 个crate(通过 checksums)
91KB
1.5K SLoC
md6-rs
通过FFI实现MD6哈希函数的Rust实现。
文档
特别感谢
在Patreon上支持进一步发展的所有人,特别是
- ThePhD
- Embark Studios
lib.rs
:
通过FFI引用实现MD6哈希函数。
有关MD6的更多信息,请访问其官方网站。
提供了两个API:一个用于单块哈希,一个用于多数据段的哈希。
示例
使用256位MD6哈希函数对单个数据块进行哈希,然后验证结果。
let mut result = [0; 32];
md6::hash(256, b"The lazy fox jumps over the lazy dog", &mut result).unwrap();
assert_eq!(Vec::from_iter(result.iter().map(|&i| i)),
vec![0xE4, 0x55, 0x51, 0xAA, 0xE2, 0x66, 0xE1, 0x48,
0x2A, 0xC9, 0x8E, 0x24, 0x22, 0x9B, 0x3E, 0x90,
0xDC, 0x06, 0x61, 0x77, 0xF8, 0xFB, 0x1A, 0x52,
0x6E, 0x9D, 0xA2, 0xCC, 0x95, 0x71, 0x97, 0xAA]);
使用512位MD6哈希函数对多个数据块进行哈希,然后验证结果。
let mut result = [0; 64];
let mut state = Md6::new(512).unwrap();
state.update("Zażółć ".as_bytes());
state.update("gęślą ".as_bytes());
state.update("jaźń".as_bytes());
state.finalise(&mut result);
assert_eq!(Vec::from_iter(result.iter().map(|&i| i)),
vec![0x92, 0x4E, 0x91, 0x6A, 0x01, 0x2C, 0x1A, 0x8D,
0x0F, 0xB7, 0x9A, 0x4A, 0xD4, 0x9C, 0x55, 0x5E,
0xBD, 0xCA, 0x59, 0xB8, 0x1B, 0x4C, 0x13, 0x41,
0x2E, 0x32, 0xA5, 0xC9, 0x3B, 0x61, 0xAD, 0xB8,
0x4D, 0xB3, 0xF9, 0x0C, 0x03, 0x51, 0xB2, 0x9E,
0x7B, 0xAE, 0x46, 0x9F, 0x8D, 0x60, 0x5D, 0xED,
0xFF, 0x51, 0x72, 0xDE, 0xA1, 0x6F, 0x00, 0xF7,
0xB4, 0x82, 0xEF, 0x87, 0xED, 0x77, 0xD9, 0x1A]);
使用64位MD6哈希函数比较对相同有效消息进行单块和多重块哈希的结果。
let mut result_multi = [0; 8];
let mut result_single = [0; 8];
let mut state = Md6::new(64).unwrap();
state.update("Zażółć ".as_bytes());
state.update("gęślą ".as_bytes());
state.update("jaźń".as_bytes());
state.finalise(&mut result_multi);
md6::hash(64, "Zażółć gęślą jaźń".as_bytes(), &mut result_single).unwrap();
assert_eq!(Vec::from_iter(result_multi .iter().map(|&i| i)),
Vec::from_iter(result_single.iter().map(|&i| i)));
特别感谢
感谢在Patreon上支持进一步发展的所有人,特别是
- ThePhD
- Embark Studios
依赖项
~225KB