2013-10-10 57 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程序讀取。