Split digest and hexdigest for future reference

This commit is contained in:
Patrick Auernig 2021-02-08 04:30:22 +01:00
parent 0871c18e19
commit f6744d3120

View File

@ -39,10 +39,10 @@ fn leftrotate(x: u32, amount: usize) -> u32 {
(x << amount) | (x >> (32 - amount))
}
pub fn hexdigest<B>(message: B) -> String
pub fn digest<B>(message: B) -> [u8; 16]
where B: AsRef<[u8]>
{
use std::{convert::TryInto, fmt::Write};
use std::convert::TryInto;
let message = message.as_ref();
let message_len = message.len();
@ -86,10 +86,15 @@ pub fn hexdigest<B>(message: B) -> String
d0 = d0.wrapping_add(d);
}
let digest = [a0.to_le_bytes(), b0.to_le_bytes(), c0.to_le_bytes(), d0.to_le_bytes()].concat();
let hex_len = digest.len();
[a0.to_le_bytes(), b0.to_le_bytes(), c0.to_le_bytes(), d0.to_le_bytes()].concat().try_into().unwrap()
}
digest.into_iter().fold(String::with_capacity(hex_len), |mut acc, val| {
pub fn hexdigest<B>(message: B) -> String
where B: AsRef<[u8]>
{
use std::fmt::Write;
digest(message).iter().fold(String::with_capacity(16), |mut acc, val| {
write!(acc, "{:02x}", val).unwrap();
acc
})