use digest::Digest;
use md5::Md5;
use sha1::Sha1;
use sha2::{Sha256, Sha512};
use std::fs::File;
use std::io::Read;
use std::path::Path;
pub fn md5(input: &str) -> String {
if Path::new(input).exists() {
let mut file = File::open(input).unwrap();
let mut hasher = Md5::new();
let mut buffer = Vec::new();
file.read_to_end(&mut buffer).unwrap();
hasher.update(&buffer);
format!("{:x}", hasher.finalize())
} else {
let mut hasher = Md5::new();
hasher.update(input.as_bytes());
format!("{:x}", hasher.finalize())
}
}
pub fn sha1(input: &str) -> String {
if Path::new(input).exists() {
let mut file = File::open(input).unwrap();
let mut hasher = Sha1::new();
let mut buffer = Vec::new();
file.read_to_end(&mut buffer).unwrap();
hasher.update(&buffer);
format!("{:x}", hasher.finalize())
} else {
let mut hasher = Sha1::new();
hasher.update(input.as_bytes());
format!("{:x}", hasher.finalize())
}
}
pub fn sha256(input: &str) -> String {
if Path::new(input).exists() {
let mut file = File::open(input).unwrap();
let mut hasher = Sha256::new();
let mut buffer = Vec::new();
file.read_to_end(&mut buffer).unwrap();
hasher.update(&buffer);
format!("{:x}", hasher.finalize())
} else {
let mut hasher = Sha256::new();
hasher.update(input.as_bytes());
format!("{:x}", hasher.finalize())
}
}
pub fn sha512(input: &str) -> String {
if Path::new(input).exists() {
let mut file = File::open(input).unwrap();
let mut hasher = Sha512::new();
let mut buffer = Vec::new();
file.read_to_end(&mut buffer).unwrap();
hasher.update(&buffer);
format!("{:x}", hasher.finalize())
} else {
let mut hasher = Sha512::new();
hasher.update(input.as_bytes());
format!("{:x}", hasher.finalize())
}
}