通过JPG编译维护LSB-有可能吗?

这是“非常确定我们找到了答案,但希望我们错了”的问题之一。我们正在寻找一个隐写术问题,它并不漂亮。

情况: 我们有一系列图像。我们要标记它们(水印),以便水印可以经受一系列条件。更重要的是,我们使用的是全损格式JPG,而不是无损的PNG等格式。我们的水印需要在屏幕截图中幸存,此外,还需要肉眼不可见。最后,它们至少需要包含32个字节的数据(我们当然希望它们在整个图像上重复出现图案)。由于上述原因,我们需要将信息隐藏在像素本身中。我正在尝试进行最低有效位更改,包括使用每个“位”使用大块(我尝试将两个增量都设为16,因为这是我们所理解的jpg压缩算法大小块以及各种质数),并读取了结果块。这种导致需求的方法:

  • 必须为.jpg
  • 必须在jpg压缩算法中生存下来
  • 必须保留屏幕截图(假设屏幕截图无损保存)

问题: JPG压缩,即使100%“最小损失”也会改变像素值。例如,如果我们在整个图像上绘制一个巨大的带,将64像素高的块中的红色通道设置为255,则在编译后的图像中,有一半以上不是255。这意味着,即使使用块的平均值,LSB也是随机的,而不是我们“编码”的LSB。我们当前的原型可以获取随机图像,将消息压缩为有位编码的字符串,然后将其转换为XbyX数组,然后使用三个颜色通道之一的LSB将其叠加在图像上。它可以正常工作,并且在保留BufferedImage的情况下仍可检测到,但是一旦转换为JPG,压缩就会破坏该消息。

问题: 有没有一种方法可以更好地控制jpg压缩的像素值?还是我们只是在这里简单地SOOL并需要放弃这种途径,要么转移到PNG输出(不太可能),要么需要详细了解JPG压缩的算法,并用它以某种方式确定LSB模式的结果?最好是Java,但是如果有可以解决我们问题的语言(我们当前的PoC在Java中),我们愿意考虑使用其他语言

wawad1314 回答:通过JPG编译维护LSB-有可能吗?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2724577.html

大家都在问