rust_helpers/
md5.rs

1#[cfg(feature = "base64")]
2use crate::Base64EncodeExt;
3use crate::HexEncodeExt;
4
5pub trait MD5Ext {
6    fn md5(&self) -> [u8; 16];
7    fn md5_hex(&self) -> String {
8        self.md5().hex_lower()
9    }
10    #[cfg(feature = "base64")]
11    fn md5_base64(&self) -> String {
12        self.md5().b64_enc()
13    }
14}
15
16impl<T> MD5Ext for T
17where
18    T: AsRef<[u8]>,
19{
20    fn md5(&self) -> [u8; 16] {
21        md5::compute(self.as_ref()).into()
22    }
23}
24
25#[cfg(test)]
26mod tests {
27    use super::*;
28    #[test]
29    fn test_md5() {
30        let s = b"hello world";
31        let e = s.md5_hex();
32        assert_eq!(e, "5eb63bbbe01eeed093cb22bb8f5acdc3");
33        #[cfg(feature = "base64")]
34        assert_eq!(s.md5_base64(), "XrY7u+Ae7tCTyyK7j1rNww==");
35    }
36}