PHP 把源文件加密到 BMP 位图 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
waitmoonman
V2EX    PHP

PHP 把源文件加密到 BMP 位图

  •  
  •   waitmoonman Oct 31, 2017 3899 views
    This topic created in 3100 days ago, the information mentioned may be changed or developed.

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

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

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

    刚开始,可以加密文件,但是解密出来会有很多无用的字符串。 后来 ,当加密文件时,增加了 2 个标记, 一个标记文件名长度,用四个字节存储, 一个标记文件数据长度。用八个字节存储。 这样就可以保证能准确读取多大的数据块。 上点核心代码: file 演示地址 github 地址 !!! demo 的地址,不需要上传 bmp 也可以的,因为我服务器内置了一张 2.47m 的 bmp, :smiley:, 你只要加密之后会返回一张 BMP 图片, 然后再点击解密按钮选择加密后的 bmp 位图就可以得到源文件了

    8 replies    2017-10-31 18:04:09 +08:00
    sagaxu
        1
    sagaxu  
       Oct 31, 2017
    图片压缩或者缩放后还能解密吗?
    GeruzoniAnsasu
        2
    GeruzoniAnsasu  
       Oct 31, 2017
    你这个做法,rgb565 的 bmp 和 rgba 的 bmp 都不适用的,另外宽度不对齐到 4 的 24 位 bmp 有额外的字节可以用

    都是基本操作没啥特别的
    waitmoonman
        3
    waitmoonman  
    OP
       Oct 31, 2017
    @sagaxu 不行的。 加密后的图片进行压缩的话,会导致内部的数据错乱,读取的时候会出错的。
    waitmoonman
        4
    waitmoonman  
    OP
       Oct 31, 2017
    @GeruzoniAnsasu 受教了,没有深入接触位图的知识,只是看了一篇位图的文章然后写的。
    sagaxu
        5
    sagaxu  
       Oct 31, 2017
    @waitmoonman 你可以搜一下图片隐写技术,有很多基于信号变换的算法,能应对缩放或者拉伸
    afeicool
        6
    afeicool  
       Oct 31, 2017
    php 确实是最好的语言,没毛病
    waitmoonman
        7
    waitmoonman  
    OP
       Oct 31, 2017
    @sagaxu mark, 最近在做毕业设计, 忙完回头看一下, 有没有好的博客直接推荐?
    waitmoonman
        8
    waitmoonman  
    OP
       Oct 31, 2017
    @afeicool 哈哈
    About     Help     Advertise     Blog     API     FAQ     Solana     4277 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 56ms UTC 04:11 PVG 12:11 LAX 21:11 JFK 00:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86