pub mod easy_hasher {
type _Byte = u8;
type _Data = Vec<_Byte>;
use sha3::Digest;
use sha1::Sha1;
pub fn hex_string(data: _Data) -> String {
data
.iter()
.map(|byte| format!("{:x}", byte))
.collect()
}
fn sha3<T>(mut hasher: T, data: _Data) -> _Data where T: Digest {
hasher.input(data.as_slice());
hasher
.result()
.to_vec()
}
fn sha(data: _Data) -> _Data {
let mut hasher = Sha1::new();
hasher.update(data.as_slice());
hasher.digest().bytes().to_vec()
}
pub fn param_crc8(data: _Data, poly: u8, init: u8) -> _Data {
let mut crc8 = crc8::Crc8::create_msb(poly);
vec![crc8.calc(data.as_slice(), data.len() as i32, init)]
}
pub fn crc8(d: _Data) -> _Data {
param_crc8(d, 0x7, 0x0)
}
pub fn crc16(d: _Data) -> _Data {
crc16::State::<crc16::ARC>::calculate(d.as_slice()).to_be_bytes().to_vec()
}
pub fn crc32(d: _Data) -> _Data {
crc::crc32::checksum_ieee(d.as_slice()).to_be_bytes().to_vec()
}
pub fn crc64(d: _Data) -> _Data {
crc::crc64::checksum_ecma(d.as_slice()).to_be_bytes().to_vec()
}
pub fn md5(d: _Data) -> _Data {
md5::compute(d).0.to_vec()
}
pub fn sha1(d: _Data) -> _Data {
sha(d)
}
pub fn sha224(d: _Data) -> _Data {
sha3(sha2::Sha224::new(), d)
}
pub fn sha256(d: _Data) -> _Data {
sha3(sha2::Sha256::new(), d)
}
pub fn sha384(d: _Data) -> _Data {
sha3(sha2::Sha384::new(), d)
}
pub fn sha512(d: _Data) -> _Data {
sha3(sha2::Sha512::new(), d)
}
pub fn sha3_224(d: _Data) -> _Data {
sha3(sha3::Sha3_224::new(), d)
}
pub fn sha3_256(d: _Data) -> _Data {
sha3(sha3::Sha3_256::new(), d)
}
pub fn sha3_384(d: _Data) -> _Data {
sha3(sha3::Sha3_384::new(), d)
}
pub fn sha3_512(d: _Data) -> _Data {
sha3(sha3::Sha3_512::new(), d)
}
pub fn string_crc8(s: String) -> _Data {
crc8(s.into_bytes())
}
pub fn string_crc16(s: String) -> _Data {
crc16(s.into_bytes())
}
pub fn string_crc32(s: String) -> _Data {
crc32(s.into_bytes())
}
pub fn string_crc64(s: String) -> _Data {
crc64(s.into_bytes())
}
pub fn string_md5(s: String) -> _Data {
md5(s.into_bytes())
}
pub fn string_sha1(s: String) -> _Data {
sha1(s.into_bytes())
}
pub fn string_sha224(s: String) -> _Data {
sha224(s.into_bytes())
}
pub fn string_sha256(s: String) -> _Data {
sha256(s.into_bytes())
}
pub fn string_sha384(s: String) -> _Data {
sha384(s.into_bytes())
}
pub fn string_sha512(s: String) -> _Data {
sha512(s.into_bytes())
}
pub fn string_sha3_224(s: String) -> _Data {
sha3_224(s.into_bytes())
}
pub fn string_sha3_256(s: String) -> _Data {
sha3_256(s.into_bytes())
}
pub fn string_sha3_384(s: String) -> _Data {
sha3_384(s.into_bytes())
}
pub fn string_sha3_512(s: String) -> _Data {
sha3_512(s.into_bytes())
}
}