diff --git a/vnt/src/cipher/aes_ecb.rs b/vnt/src/cipher/aes_ecb.rs index 14c83db..364c605 100644 --- a/vnt/src/cipher/aes_ecb.rs +++ b/vnt/src/cipher/aes_ecb.rs @@ -51,10 +51,6 @@ impl AesEcbCipher { //未加密的数据直接丢弃 return Err(io::Error::new(io::ErrorKind::Other, "not encrypt")); } - if net_packet.payload().len() < 16 { - log::error!("数据异常,长度{}小于{}", net_packet.payload().len(), 16); - return Err(io::Error::new(io::ErrorKind::Other, "data err")); - } if let Some(finger) = &self.finger { let mut nonce_raw = [0; 12]; @@ -75,6 +71,10 @@ impl AesEcbCipher { } net_packet.set_data_len(net_packet.data_len() - finger.len())?; } + if net_packet.payload().len() < 16 { + log::error!("数据异常,长度{}小于{}", net_packet.payload().len(), 16); + return Err(io::Error::new(io::ErrorKind::Other, "data err")); + } let mut out = [0u8; 1024 * 5]; let rs = match self.key { AesEcbEnum::AES128ECB(key) => Aes128EcbDec::new(&key.into()) @@ -111,7 +111,7 @@ impl AesEcbCipher { } Err(e) => Err(io::Error::new( io::ErrorKind::Other, - format!("解密失败:{}", e), + format!("aes_ecb解密失败:{}", e), )), } } @@ -154,7 +154,7 @@ impl AesEcbCipher { } Err(e) => Err(io::Error::new( io::ErrorKind::Other, - format!("加密失败:{}", e), + format!("aes_ecb加密失败:{}", e), )), }; } @@ -164,6 +164,8 @@ impl AesEcbCipher { fn test_aes_ecb() { let d = AesEcbCipher::new_128([0; 16], Some(Finger::new("123"))); let mut p = NetPacket::new_encrypt([0; 100]).unwrap(); + let src = p.buffer().to_vec(); d.encrypt_ipv4(&mut p).unwrap(); d.decrypt_ipv4(&mut p).unwrap(); + assert_eq!(p.buffer(), &src) } diff --git a/vnt/src/cipher/openssl_aes_ecb.rs b/vnt/src/cipher/openssl_aes_ecb.rs index 4f8fad6..e0e5b23 100644 --- a/vnt/src/cipher/openssl_aes_ecb.rs +++ b/vnt/src/cipher/openssl_aes_ecb.rs @@ -105,10 +105,6 @@ impl AesEcbCipher { //未加密的数据直接丢弃 return Err(io::Error::new(io::ErrorKind::Other, "not encrypt")); } - if net_packet.payload().len() < 16 { - log::error!("数据异常,长度{}小于{}", net_packet.payload().len(), 16); - return Err(io::Error::new(io::ErrorKind::Other, "data err")); - } if let Some(finger) = &self.finger { let mut nonce_raw = [0; 12]; @@ -129,6 +125,10 @@ impl AesEcbCipher { } net_packet.set_data_len(net_packet.data_len() - finger.len())?; } + if net_packet.payload().len() < 16 { + log::error!("数据异常,长度{}小于{}", net_packet.payload().len(), 16); + return Err(io::Error::new(io::ErrorKind::Other, "data err")); + } let input = net_packet.payload(); let mut out = [0u8; 1024 * 5]; let mut out_len = 0;