#md5 #hash #streamable #memory #context #reading

md5-rs

可流式处理的MD5实现,使用no_std

5个版本

0.1.5 2022年8月11日
0.1.4 2022年3月24日
0.1.3 2022年3月24日
0.1.1 2022年3月24日
0.1.0 2022年3月24日

#651 in WebAssembly

Download history 71/week @ 2024-03-11 62/week @ 2024-03-18 16/week @ 2024-03-25 26/week @ 2024-04-01 37/week @ 2024-04-08 11/week @ 2024-04-15 80/week @ 2024-04-22 123/week @ 2024-04-29 32/week @ 2024-05-06 25/week @ 2024-05-13 61/week @ 2024-05-20 123/week @ 2024-05-27 95/week @ 2024-06-03 91/week @ 2024-06-10 124/week @ 2024-06-17 141/week @ 2024-06-24

每月480次下载
用于 onetime-cli

MIT 许可证

11KB
218

md5-rs

一个简单的MD5实现,侧重于缓冲读取,且完全no_std

由于MD5存在漏洞,因此不应在任何安全关键型软件中使用。

动机

我在做一个Web项目,意识到我没有办法在不将整个大文件读入内存的情况下获取其校验和(这在某些情况下会导致页面崩溃!)。Web Crypto API没有MD5实现,所以我决定不重新实现SHA算法,而是实现MD5。

由于主要关注WebAssembly,因此API可能略有不同。

使用方法

由于它是完全的no_std,因此这个库的使用可能不像其他MD5库那样直接。

use md5_rs::Context;

// get the hash
let mut ctx = Context::new();
ctx.read(b"Hello, world");
let digest = ctx.finish();

// get digest as string
let hash = digest.iter().map(|x| format!("{:02x}", x)).collect::<String>();
println!("{hash}"); // "bc6e6f16b8a077ef5fbc8d59d0b931b9"

无运行时依赖