java - 什么密码可以加密 UDP 数据包?

标签 java encryption udp aes blowfish

我有一个通过 UDP 进行时间敏感通信的应用程序(例如视频流或游戏)。数据包可能会丢失,不需要重传。

我应该使用什么密码来加密数据报?

我倾向于欧洲央行模式下的河豚。我知道ECB模式有问题,但我需要支持丢失数据包,因此加密不能依赖于以前的 block 。 是否有更好的密码或模式可以用来减少 issues with ECB mode并且仍然允许丢失数据包?

(我想保留一切纯 Java,所以我不能使用 DTLS。)

最佳答案

计数器模式 (CTR) 中的 AES 是一个可行的选择。建立连接时,您将以发送程序和接收程序都知道的随机选择的值启动计数器。如果每个视频数据包包含一个足够长的序列号 (n),不会在单个连接内重复,则接收程序可以将其添加到初始计数器值,以获得用于加密该数据包。

当然,对于长度超过一个 block 的消息,您需要在一个数据包内多次递增计数器。我将确定最长传输的数据包有多少个 block ,例如 16 个 block ,并对数据包中的第一个 block 使用计数器值 16*n16*n+1 第二个,依此类推。

关于java - 什么密码可以加密 UDP 数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3868829/

相关文章:

java - Spark SQL 失败,因为 "Constant pool has grown past JVM limit of 0xFFFF"

java - 在 Java Swing 中处理用户驱动的大小调整、位置变化

java - 需要绕过 WCF 对响应消息的解密

ruby - 针对外部 UDP API 进行测试。从哪儿开始?

FFMPEG 和 FFPlay 可以从一个 ip 访问 rtsp 流,但不能从另一个 ip

java - 异步UDP如何在java中从客户端获取ip和端口?

java - Lucene 5 排序问题(UninvertedReader 和 DocValues)

java - 是否有使用 @Version 的可配置替代方案?

python - 保护Python代码,包括密码、加密?

凯撒密码不适用于空格