2013-10-10 23 views
5

我创建了隐藏照片中文本的服务。例如:使用php隐藏照片中的秘密

$img_name = "myimage.jpeg"; 
$orig_contents = file_get_contents($img_name); 
$msg = "My secret."; 

$fp = fopen($img_name, "wb"); 
fwrite($fp, $orig_contents . $msg); 
fclose($fp); 

我很好奇:我可以使用这种方法在照片中隐藏多少信息?例如,我可以在图像文件中嵌入小说的章节吗?我添加了相当大的文本块而不会破坏图像,但是我想知道PHP或图像查看应用程序是否对此进行限制。

(附注:我知道,这种类型的隐写的是不安全的,我只是在做以此为乐。)

+0

多么奇怪的事情......! –

+0

听起来像你可以简单地测试自己 – 2013-10-10 21:56:32

+0

哈哈。来吧,伙计。在朋友之间交换信息很有趣。 :)如果有人有建设性的建议,我会很感激。 – hawkharris

回答

7

你应该Steganography看一看。并且请注意,您并未隐藏图像中的数据。任何可以用文本编辑器打开图像的人都会在文件的某处看到你的文本(在这种情况下,最后情况会更糟糕)。如果我是你,我会做到以下几点:

  1. 加密数据与一些decent Algorithm关键
  2. 创建,通过在文件中 -random分发数据的功能方式,这样任何人都会注意到你正试图把一些秘密东西(请注意你必须在以后恢复它)。在常规的位图图像中,如果您将原始图像与隐藏数据进行比较,则可以使用每个像素的最后一位来保存您的信息,因为由此产生的更改不会被人眼感知。
  3. 祈祷NSA不读它,否则,你可以得到一些严重的麻烦:)
+1

作为国家安全局成员 - 太迟了。 –

+0

+1为第三点。 –

0

我觉得这不是做最安全的方式,如果你真的想隐藏字符串转换成图像,您可能会使用特定模式每10像素更改一个像素,这个想法很简单,就是将图像转换为整数数组,循环遍历数组,每10个像素将数值更改为ascii character数字。

更改1每个10像素不会产生大量噪音。

为了使它更安全使用编码,所以使用你自己的地图编码ascii,就像@fvdalcin提出的。

4

不,基本上PHP或JPEG format对使用​​此方法可以将多少数据添加到图像都没有限制。这是有效的,因为JPEG格式将所有图像数据存储在文件的开头直到某个标记。例如,在标记之后,任何数据都被假定为其他类似缩略图的数据。

一个cool trick(也适用于GIF图像)是您可以将ZIP文件附加到图像的末尾,并且该文件可以同时用作JPEG和ZIP文件。它只需通过更改文件扩展名就可以被图像处理程序或ZIP程序读取。