PHP 把源文件加密到 BMP 位圖

以前看過(guò)一個(gè)C++的視頻, 說(shuō)的是把文件隱藏到BMP位圖中。
學(xué)了PHP之后,(PHP是世界上最好的語(yǔ)言) 應(yīng)該也可以完成這個(gè)任務(wù)。

當(dāng)然并沒(méi)有什么實(shí)際作用,看看就可以了。
所以就動(dòng)手做了一個(gè)~~~
利用的是BMP位圖在色道中,每四個(gè)字節(jié)就有一個(gè)字節(jié)是無(wú)用的,所以就可以把源文件base64化然后單個(gè)拆分存入圖片中,再重新生成一張BMP位圖, 表面上看不出有任何變化。大小如果不超過(guò)源文件的1/4的話,也是不會(huì)有變化的:

比如位圖是5M,需要加密的文件是1M,當(dāng)加密后,位圖還是5M,而且已經(jīng)把需要加密的文件存入位圖中

剛開始,可以加密文件,但是解密出來(lái)會(huì)有很多無(wú)用的字符串。
后來(lái) ,當(dāng)加密文件時(shí),增加了2個(gè)標(biāo)記, 一個(gè)標(biāo)記文件名長(zhǎng)度,用四個(gè)字節(jié)存儲(chǔ), 一個(gè)標(biāo)記文件數(shù)據(jù)長(zhǎng)度。用八個(gè)字節(jié)存儲(chǔ)。
這樣就可以保證能準(zhǔn)確讀取多大的數(shù)據(jù)塊。
上點(diǎn)核心代碼:

file

演示地址
github 地址
!!! demo 的地址,不需要上傳 bmp 也可以的,因?yàn)槲曳?wù)器內(nèi)置了一張 2.47m 的 bmp, :smiley:, 你只要加密之后會(huì)返回一張 BMP 圖片, 然后再點(diǎn)擊解密按鈕選擇加密后的bmp位圖就可以得到源文件了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容