PHP 把源文件加密到 BMP 位图

296 阅读1分钟

以前看过一个C++的视频, 说的是把文件隐藏到BMP位图中。
学了PHP之后,(PHP是世界上最好的语言) 应该也可以完成这个任务。

当然并没有什么实际作用,看看就可以了。
所以就动手做了一个~~~
利用的是BMP位图在色道中,每四个字节就有一个字节是无用的,所以就可以把源文件base64化然后单个拆分存入图片中,再重新生成一张BMP位图, 表面上看不出有任何变化。大小如果不超过源文件的1/4的话,也是不会有变化的:

比如位图是5M,需要加密的文件是1M,当加密后,位图还是5M,而且已经把需要加密的文件存入位图中

刚开始,可以加密文件,但是解密出来会有很多无用的字符串。
后来 ,当加密文件时,增加了2个标记, 一个标记文件名长度,用四个字节存储, 一个标记文件数据长度。用八个字节存储。
这样就可以保证能准确读取多大的数据块。
上点核心代码:

file
file

演示地址
github 地址
!!! demo 的地址,不需要上传 bmp 也可以的,因为我服务器内置了一张 2.47m 的 bmp, :smiley:, 你只要加密之后会返回一张 BMP 图片, 然后再点击解密按钮选择加密后的bmp位图就可以得到源文件了