我有一个通过 UDP 进行时间敏感通信的应用程序(例如视频流或游戏)。数据包可能会丢失,不需要重传。
我应该使用什么密码来加密数据报?
我倾向于欧洲央行模式下的河豚。我知道ECB模式有问题,但我需要支持丢失数据包,因此加密不能依赖于以前的 block 。 是否有更好的密码或模式可以用来减少 issues with ECB mode并且仍然允许丢失数据包?
(我想保留一切纯 Java,所以我不能使用 DTLS。)
最佳答案
计数器模式 (CTR) 中的 AES 是一个可行的选择。建立连接时,您将以发送程序和接收程序都知道的随机选择的值启动计数器。如果每个视频数据包包含一个足够长的序列号 (n),不会在单个连接内重复,则接收程序可以将其添加到初始计数器值,以获得用于加密该数据包。
当然,对于长度超过一个 block 的消息,您需要在一个数据包内多次递增计数器。我将确定最长传输的数据包有多少个 block ,例如 16 个 block ,并对数据包中的第一个 block 使用计数器值 16*n
,16*n+1
第二个,依此类推。
关于java - 什么密码可以加密 UDP 数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3868829/