我正在使用http://github.com/anirudhsama在图像中隐藏一个文本文件,它工作正常,我可以用我的程序再次提取文本文件。
但是当我以编程方式在 facebook、twitter 和电子邮件中共享图像时,该共享图像未正确解码,因此我无法取回文件。
我按如下方式检索图像:
UIImage *finalImageWithStegno = [UIImage imageWithContentsOfFile:fileName];
我正在使用http://github.com/anirudhsama在图像中隐藏一个文本文件,它工作正常,我可以用我的程序再次提取文本文件。
但是当我以编程方式在 facebook、twitter 和电子邮件中共享图像时,该共享图像未正确解码,因此我无法取回文件。
我按如下方式检索图像:
UIImage *finalImageWithStegno = [UIImage imageWithContentsOfFile:fileName];
我怀疑是上传到网站时的图像压缩。检查这一点的一种简单方法是在封面图像中隐藏一条消息(获取隐秘图像)。将图像上传到网站并下载。将原始的 stego 图像与下载的图像进行比较。如果它们不同(逐字节),那就是你的问题。
快速浏览一下代码,该应用程序似乎将数据隐藏在空间域中,这并不可靠。您的信息直接隐藏在图像像素中,如果它们发生变化(由于有损压缩、模糊等),您的信息将会丢失。对此的解决方案是将数据隐藏在频域中。另一种解决方案可能是上传具有未压缩文件类型的图像?我不太了解网站如何处理图像,因此第二个建议可能是不可能的。
在任何情况下,如果上传到网站会扭曲图像,请四处寻找可能为您服务的其他应用程序,除非您可以自己编码。然后我们可以进入细节。:)
您的算法不稳健。使用变换域隐写术在重新编码时保留信息。您可以选择嵌入 DCT 系数或 DWT 系数以获得更好的鲁棒性。