调整长度判断
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user