PHP 把原始檔加密到 BMP 點陣圖

DavidNineRoc發表於2017-10-28

以前看過一個C++的視訊, 說的是把檔案隱藏到BMP點陣圖中。
學了PHP之後,(PHP是世界上最好的語言) 應該也可以完成這個任務。

當然並沒有什麼實際作用,看看就可以了。
所以就動手做了一個~~~
利用的是BMP點陣圖在色道中,每四個位元組就有一個位元組是無用的,所以就可以把原始檔base64化然後單個拆分存入圖片中,再重新生成一張BMP點陣圖, 表面上看不出有任何變化。大小如果不超過原始檔的1/4的話,也是不會有變化的:

比如點陣圖是5M,需要加密的檔案是1M,當加密後,點陣圖還是5M,而且已經把需要加密的檔案存入點陣圖中

剛開始,可以加密檔案,但是解密出來會有很多無用的字串。
後來 ,當加密檔案時,增加了2個標記, 一個標記檔名長度,用四個位元組儲存, 一個標記檔案資料長度。用八個位元組儲存。
這樣就可以保證能準確讀取多大的資料塊。
上點核心程式碼:

file
file

演示地址
github 地址
!!! demo 的地址,不需要上傳 bmp 也可以的,因為我伺服器內建了一張 2.47m 的 bmp, :smiley:, 你只要加密之後會返回一張 BMP 圖片, 然後再點選解密按鈕選擇加密後的bmp點陣圖就可以得到原始檔了

相關文章