#md5 #hash #no-alloc

no-std md5hash

一个安全的Rust无std MD5散列实现

2个版本

0.1.1 2023年6月27日
0.1.0 2023年6月10日

密码学类别中排名1496

MIT许可证

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的情况,例如旧系统。

无运行时依赖项