调整长度判断

This commit is contained in:
lubeilin
2023-09-26 21:51:56 +08:00
parent 707b07b8d3
commit 9c098c55c9
2 changed files with 12 additions and 10 deletions
+8 -6
View File
@@ -51,10 +51,6 @@ impl AesEcbCipher {
//未加密的数据直接丢弃 //未加密的数据直接丢弃
return Err(io::Error::new(io::ErrorKind::Other, "not encrypt")); 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 { if let Some(finger) = &self.finger {
let mut nonce_raw = [0; 12]; let mut nonce_raw = [0; 12];
@@ -75,6 +71,10 @@ impl AesEcbCipher {
} }
net_packet.set_data_len(net_packet.data_len() - finger.len())?; 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 mut out = [0u8; 1024 * 5];
let rs = match self.key { let rs = match self.key {
AesEcbEnum::AES128ECB(key) => Aes128EcbDec::new(&key.into()) AesEcbEnum::AES128ECB(key) => Aes128EcbDec::new(&key.into())
@@ -111,7 +111,7 @@ impl AesEcbCipher {
} }
Err(e) => Err(io::Error::new( Err(e) => Err(io::Error::new(
io::ErrorKind::Other, io::ErrorKind::Other,
format!("解密失败:{}", e), format!("aes_ecb解密失败:{}", e),
)), )),
} }
} }
@@ -154,7 +154,7 @@ impl AesEcbCipher {
} }
Err(e) => Err(io::Error::new( Err(e) => Err(io::Error::new(
io::ErrorKind::Other, io::ErrorKind::Other,
format!("加密失败:{}", e), format!("aes_ecb加密失败:{}", e),
)), )),
}; };
} }
@@ -164,6 +164,8 @@ impl AesEcbCipher {
fn test_aes_ecb() { fn test_aes_ecb() {
let d = AesEcbCipher::new_128([0; 16], Some(Finger::new("123"))); let d = AesEcbCipher::new_128([0; 16], Some(Finger::new("123")));
let mut p = NetPacket::new_encrypt([0; 100]).unwrap(); let mut p = NetPacket::new_encrypt([0; 100]).unwrap();
let src = p.buffer().to_vec();
d.encrypt_ipv4(&mut p).unwrap(); d.encrypt_ipv4(&mut p).unwrap();
d.decrypt_ipv4(&mut p).unwrap(); d.decrypt_ipv4(&mut p).unwrap();
assert_eq!(p.buffer(), &src)
} }
+4 -4
View File
@@ -105,10 +105,6 @@ impl AesEcbCipher {
//未加密的数据直接丢弃 //未加密的数据直接丢弃
return Err(io::Error::new(io::ErrorKind::Other, "not encrypt")); 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 { if let Some(finger) = &self.finger {
let mut nonce_raw = [0; 12]; let mut nonce_raw = [0; 12];
@@ -129,6 +125,10 @@ impl AesEcbCipher {
} }
net_packet.set_data_len(net_packet.data_len() - finger.len())?; 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 input = net_packet.payload();
let mut out = [0u8; 1024 * 5]; let mut out = [0u8; 1024 * 5];
let mut out_len = 0; let mut out_len = 0;