2个版本
0.1.1 | 2023年6月27日 |
---|---|
0.1.0 | 2023年6月10日 |
在密码学类别中排名1496
20KB
374 行
md5hash
此crate提供了一个兼容no_std的MD5散列,无依赖,用安全的Rust编写。
该crate包含一个MD5Hasher
类型,该类型使用digest方法接收数据,然后使用MD5算法对其进行散列。一旦使用digest方法对所有数据进行“消化”,则finish方法返回一个代表散列结果的MD5Digest
类型。
示例
可以创建一个MD5Hasher实例,并可以对不连续的切片重复调用digest方法。
use md5hash::MD5Hasher;
let mut hasher = MD5Hasher::new();
hasher.digest(&"message");
hasher.digest(&" ");
hasher.digest(&"digest"); // f96b697d7cb7938d525a2f31aaf161d0
assert_eq!(hasher.finish().as_ref(), &[0xf9,0x6b,0x69,0x7d,0x7c,0xb7,0x93,0x8d,
0x52,0x5a,0x2f,0x31,0xaa,0xf1,0x61,0xd0]);
或者可以使用hash函数作为方便函数来散列单个切片。
use md5hash::MD5Hasher;
assert_eq!(MD5Hasher::hash(&"message digest").as_ref(), // f96b697d7cb7938d525a2f31aaf161d0
&[0xf9,0x6b,0x69,0x7d,0x7c,0xb7,0x93,0x8d,
0x52,0x5a,0x2f,0x31,0xaa,0xf1,0x61,0xd0]);
安全性
MD5是一个损坏的散列算法,不应用于任何需要任何类型安全的应用。即使不关心安全性,也不建议用于新系统。相反,此散列只能用于需要特别MD5的情况,例如旧系统。