PHP 把源文件加密到 BMP 位图

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

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

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

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

file

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,262评论 6 13
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,814评论 0 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,156评论 19 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,395评论 11 349
  • 一CSS文字属性: color:#999999;/*文字颜色*/ font-family:宋体,sans-seri...
    一直以来都很好阅读 846评论 0 1