Struct openssl::hash::Hasher [−][src]
pub struct Hasher { /* fields omitted */ }
Expand description
Provides message digest (hash) computation.
Examples
Calculate a hash in one go:
use openssl::hash::{hash, MessageDigest};
let data = b"\x42\xF4\x97\xE0";
let spec = b"\x7c\x43\x0f\x17\x8a\xef\xdf\x14\x87\xfe\xe7\x14\x4e\x96\x41\xe2";
let res = hash(MessageDigest::md5(), data).unwrap();
assert_eq!(&*res, spec);
Supply the input in chunks:
use openssl::hash::{Hasher, MessageDigest};
let data = [b"\x42\xF4", b"\x97\xE0"];
let spec = b"\x7c\x43\x0f\x17\x8a\xef\xdf\x14\x87\xfe\xe7\x14\x4e\x96\x41\xe2";
let mut h = Hasher::new(MessageDigest::md5()).unwrap();
h.update(data[0]).unwrap();
h.update(data[1]).unwrap();
let res = h.finish().unwrap();
assert_eq!(&*res, spec);
Use an XOF hasher (OpenSSL 1.1.1+):
#[cfg(ossl111)]
{
use openssl::hash::{hash_xof, MessageDigest};
let data = b"\x41\x6c\x6c\x20\x79\x6f\x75\x72\x20\x62\x61\x73\x65\x20\x61\x72\x65\x20\x62\x65\x6c\x6f\x6e\x67\x20\x74\x6f\x20\x75\x73";
let spec = b"\x49\xd0\x69\x7f\xf5\x08\x11\x1d\x8b\x84\xf1\x5e\x46\xda\xf1\x35";
let mut buf = vec![0; 16];
hash_xof(MessageDigest::shake_128(), data, buf.as_mut_slice()).unwrap();
assert_eq!(buf, spec);
}
Warning
Don’t actually use MD5 and SHA-1 hashes, they’re not secure anymore.
Don’t ever hash passwords, use the functions in the pkcs5
module or bcrypt/scrypt instead.
For extendable output functions (XOFs, i.e. SHAKE128/SHAKE256), you must use finish_xof instead of finish and provide a buf to store the hash. The hash will be as long as the buf.
Implementations
Creates a new Hasher
with the specified hash type.
Returns the hash of the data written and resets the non-XOF hasher.
Writes the hash of the data into the supplied buf and resets the XOF hasher. The hash will be as long as the buf.
Trait Implementations
Write a buffer into this writer, returning how many bytes were written. Read more
Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
can_vector
)Determines if this Write
r has an efficient write_vectored
implementation. Read more
Attempts to write an entire buffer into this writer. Read more
write_all_vectored
)Attempts to write multiple buffers into this writer. Read more
Writes a formatted string into this writer, returning any error encountered. Read more
Auto Trait Implementations
Blanket Implementations
Mutably borrows from an owned value. Read more