1
我想在PHP中加密PNG文件(不是標頭)的內容。在PHP中加密PNG圖像內容
加密(RSA)後,IDAT塊(包含有關像素的信息)的大小發生變化。所以我想手動更改這些二進制數據(塊大小,整塊和校驗和)。諸如寬度,高度,顏色深度等特定信息將保持不變(未加密)。
想知道是否有一個函數爲我創建整個標頭,並且允許插入二進制數據作爲內容(計算校驗和以便圖像正確顯示)或者我必須自己做?
我想在PHP中加密PNG文件(不是標頭)的內容。在PHP中加密PNG圖像內容
加密(RSA)後,IDAT塊(包含有關像素的信息)的大小發生變化。所以我想手動更改這些二進制數據(塊大小,整塊和校驗和)。諸如寬度,高度,顏色深度等特定信息將保持不變(未加密)。
想知道是否有一個函數爲我創建整個標頭,並且允許插入二進制數據作爲內容(計算校驗和以便圖像正確顯示)或者我必須自己做?
最近我在C++中做了類似的事情。我沒有改變IDAT我添加了壓縮和加密圖像(類似於應用程序專用的加密)的自定義塊(名稱如xRSA)。
我能夠使用第三方庫在PNG中初始保存圖像(灰色背景和文本,通知此圖像已加密)。然後我附加了這個文件與自定義塊(銘記IEND塊)。
在PHP中使用這種方式後,可以使用imagecreatetruecolor()(GD一般)生成背景(可能不完全是灰色,但有些噪點看起來更酷),然後將原始加密圖像添加到自定義塊中。
對不起,我希望我能幫上忙。
爲什麼不只是加密整個文件?將其中的部分保留未加密的優點是什麼? – Spudley
我想你想要標題保持有效?我傾向於這樣做:將圖像解壓縮爲(r,g,b,a)32位整數數組,將加密算法應用於該塊以創建另一個有效圖像,然後寫入圖像到PNG。對於所有的意圖和目的,新圖像只是一個圖像 - 但它當然會看起來像噪聲,並需要解密才能恢復原始圖像。 – halfer
@Spudley:[Steganography](http://en.wikipedia.org/wiki/Steganography) – nico