mod identity;
mod md5;
mod sha1;
mod sha256;
pub use crate::hash_fncs::identity::no_hashing;
pub use crate::hash_fncs::md5::md5_hashing;
pub use crate::hash_fncs::sha1::sha1_hashing;
pub use crate::hash_fncs::sha256::sha256_hashing;
#[cfg(test)]
pub(crate) use crate::hash_fncs::sha256::Sha256Hash;
#[cfg(test)]
mod tests {
use super::*;
use crate::symbols;
use crate::{crack, BasicCrackParameter, CrackParameter, TargetHashInput};
#[test]
fn test_selection_compiles() {
let algo = "md5";
let alphabet = symbols::Builder::new().with_digits().build();
let basic_param = BasicCrackParameter::new(alphabet, 5, 0, true);
let user_input = "my-awesome-hash";
let _res = match algo {
"md5" => crack(CrackParameter::new(
basic_param,
md5_hashing(TargetHashInput::Plaintext(user_input)),
)),
"sha1" => crack(CrackParameter::new(
basic_param,
sha1_hashing(TargetHashInput::Plaintext(user_input)),
)),
"sha256" => crack(CrackParameter::new(
basic_param,
sha256_hashing(TargetHashInput::Plaintext(user_input)),
)),
"identity" => crack(CrackParameter::new(
basic_param,
no_hashing(TargetHashInput::Plaintext(user_input)),
)),
_ => panic!("invalid algorithm"),
};
}
}