UDP 是不是不能用 AES 来加密啊?

查看 74|回复 6
作者:tool2dx   
aes 是一种流式加密,加密时需要按照顺序,比如第 1 ,2 ,3 个数据包依次加密。解密也是类推,需要第 1 ,2 ,3 个包依次解密。
然而,UDP 会掉包。也就是解密会遇到 1 ,2 ,4 这种情况。由于第三个包掉了,那么后面数据包全部都无法顺利解密。
那么问题来了,遇到这种情况,应该选什么加密算法?
TomVista   
我更好奇的是你在哪层网络能够对数据包依次加密
b821025551b   
首先,aes 是分组加密; tcp 是流式传输;
其次,所有的加密都需要校验,只是 tcp 帮你做了而已;
那么到 udp ,需要自己做校验,比如 crc ,然后自己实现重发机制。
tool2dx
OP
  
@TomVista 就是最普通的 UDP 数据,用 socket api 写的,数据包在网络裸奔太危险,但是暂时没想到很好的加密方式。
也许能用一个随机数做种子,类似 rsa 加密 padding 那种。填充不同,加密后的数据不同。
可惜 RSA 加密太慢了,要不然还挺合适的。UDP 都是固定长度,而且分包都很小。
tool2dx
OP
  
@b821025551b 好的 UDP 协议应该允许一定程度的丢包,现在都是全球互联网,晚高峰跨国发数据丢个包,实在是太正常了。
如果都按照 TCP 的方法,1234 数据包都依次排序,严格校验数据包漏发和错发,那是可以用 AES 的,但就是失去了 UDP 的优势和意义。
forvvvv123   
@tool2dx OP 看一下 CTR 模式,AES 的话就是 AES-CTR ,每个分组可以并行解密不依赖顺序,适合你的场景。
tool2dx
OP
  
@forvvvv123 感谢,似乎可行,我去研究一下。
AES 有 CBC ,CFB ,GCM ,ECB 各种模式,被绕晕了。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部