br-crypto 0.4.8

This is an crypto
Documentation
/// modbus crc 封装校验码
pub fn modbus_crc(code: &str) -> String {
    let data = decode(code);
    let mut tmp = 65535u16;
    for buff in data.iter() {
        tmp ^= *buff as u16;
        for _ in 0..8 {
            let t = tmp & 1u16;
            if t == 1 {
                tmp >>= 1;
                tmp ^= 0xa001;
            } else {
                tmp >>= 1;
            }
        }
    }
    let ret1 = tmp >> 8;
    let ret1 = ret1 | (tmp << 8);
    format!("{code}{ret1:X}")
}

pub fn decode(str: &str) -> Vec<u8> {
    hex::decode(str).unwrap_or_default()
}
/// 加密
pub fn encode(data: &[u8]) -> String {
    hex::encode(data)
}

#[test]
fn tests() {
    let data = encode(b"1");
    assert_eq!("31", data);
    let data = decode("31");
    assert_eq!("1".as_bytes().to_vec(), data);
    let data = modbus_crc("1111");
    assert_eq!("1111CDEC", data);
}