如何在提取加密消息时应用终止条件?

How to apply a termination condition while extracting encrypted message?

首先,我想使用 AES 密码用密钥加密消息。 然后将加密消息的每个字节隐藏在随机像素内,并通过完全替换像素的一个随机组件(红色、绿色或蓝色)来实现这一点。

我使用 secureRandom 通过提供种子为 AES/CBC/PKCS5Padding 生成相同的图像像素和 IV。假设没有像素生成两次来存储字节。

现在我想提取它。 提取时,我将使用 secureRandom 和相同的种子生成相同的像素。

让我在最后一个隐藏字节的像素处停止的终止条件应该是什么? 在嵌入部分,加密消息的长度是终止。 如果可能,我们如何为提取应用终止条件?

或者是否有任何嵌入方式,以便我们稍后可以从这些随机像素中提取?

只需评估密文的长度并将其也存储在目标结构中,但存储在固定位置。在解密阶段,读取此大小信息作为要检索的字节数的计数器。作为替代解决方案,您可以依赖这样一个事实,即密文被写入多个固定长度的块(这取决于使用的算法和密钥大小)。您可以通过跟踪和错误尝试逐块读取和解密,直到获得有效的解密文本或数据不足。

编辑:

这是一个简单的计算:

假设您的密文长度为 1024 字节,并且您使用 int 作为长度信息,而不是至少需要 1024 + 4 字节来存储信息。 假设您将密文隐藏在 12345 像素中,并在前 4 个像素中存储长度信息,然后是 1024 像素的密文。如果要检索密文,首先读取四个字节以获得长度,然后读取下一个 length 字节以获取密文。在给定的示例中,您读取了 1028 bytes/pixel,其余 11317 像素/字节不感兴趣。

真的很简单,不是吗?