watermark - 很好的数字水印库

标签 watermark steganography

有人可以帮我找到一个库,或者算法的详细描述,可以将数字水印(隐形水印,只是一种隐写术)嵌入到 jpeg/png 文件中。但算法的质量应该很棒。图像旋转和扩展(如果可能)后应该可以提取该标记。

Mark只是一个关键的32字节。

我找到了一个不错的site ,但是算法是针对NetPBM格式的,那就死了……

我知道有一种LSB方法,但是它的扩展不稳定。有更好的吗?

更改元数据,不适合,因为它是可见的更改。

最佳答案

这可能不是一个真正的答案,因为我认为在这个问题上给出一个神奇的、精确的答案并不容易。水印很复杂,最好的方法是你自己:这个对于试图对您的代码进行逆向工程的攻击者来说,事情会变得更加困难。 人们甚至可以在这里阅读您的问题,猜测您使用的库,并更轻松地攻击您的系统。

使隐写术能够抵抗 JPEG 图像的扩展也非常困难,因为扩展后会重新应用 JPEG 压缩。事实上有很多 JPEG 隐写算法。您应该使用哪一个,取决于您到底需要什么:

  • 数据保密?
  • 消息存在保密性?
  • JPEG 更改后消息的一致性?
  • 抵御“已知掩护”攻击(当攻击者尝试基于隐写系统查找消息时)?
  • 抵御“已知消息”攻击(当攻击者尝试根据消息查找所使用的隐写系统时)?

据我所知,通常,抵抗 JPEG 更改(图片重新压缩)的算法通常更容易受到攻击,而在 JPEG 压缩期间运行“编码”阶段的算法(在DCT(有损)变换,以及之前的Huffmann(无损)变换)更容易受到抵制。

此外,隐写术的一个关键因素是规模:如果您只有 32 字节的数据要编码到 256*256 像素的图像中,则不要使用可以编码 512 字节的算法数据大小相同。要么使用可扩展算法,要么使用有效规模的算法。

此外,做好隐写术的最佳方法是了解其局限性,并了解隐写分析器的工作原理。尝试这些工具,这样您就可以了解攻击者会对您的图片做什么。^

现在,我无法告诉您哪种隐写系统最适合您,但我可以给您一些指示:

  • jSteg - 相当老了,我认为它不会抵抗 JPEG 更改
  • OutGuess - 也很旧,但最好的算法之一
  • F5 (and F3/F4) - 更新的,好的算法,科学研究的背后。
  • stegHide

我认为所有这些都是基于 LSB 的:编码是在 JPEG 压缩期间、DCT 和量化之后完成的。我听说过的唯一一个非基于 LSB 的隐写系统在 this 中提到过。不过,我还没有读完研究论文,所以我不知道这是否能满足您的需求。

但是,我不确定是否存在真正的隐写算法可以抵抗 JPEG 压缩、JPEG 大小调整和旋转、抵抗视觉和统计攻击。 或者我不知道。

很抱歉缺乏准确的答案,我试图向您提供我所知道的有关该主题的信息,因为了解更多信息总是更好。也很抱歉缺乏正确的英语,我是法国人,没有人是完美的:)

关于watermark - 很好的数字水印库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9127981/

相关文章:

image - 如何在视频/图像上添加图像或文本(水印)-Flutter/Dart

java - 创建用于将所有视频设置为相同大小并添加水印的 FFMPEG 命令?

python - 使用 python 将数据嵌入到二进制图像中

nlp - 撰写包含 160 位可恢复信息的合成英语短语

image - 如何在 jpg 或 gif 照片中隐藏信息?

java - 解码 .bmp 图像

dart - 如何在抖动中制作带有水印的图像?

html - 水印文本对 Angular 重复 css/html

c# - 在其他图像上放置水印图像(C#、ASP.Net)