重要文件加密的方法有很多种,例如:winrar压缩加密,加密软件等,但将文件隐藏到一副图片里面,一般人想不到里面有文件隐藏着吧,哇哈哈!将文件隐藏到一副图片的方法很多,常见的有以下三种方法:
1、将文件写入到图片的尾部,这个方法比较简单,效果也还不错,但有时候比较容易露馅儿,比如图片的分辨率明明很低但是文件却有好几兆大小。
2、在不影响图片整体效果的前提下修改特定比特位,实现将文件隐藏的效果。这种方法隐藏的效果是最好的,但缺点是隐藏的内容很有限,而且能隐藏文件的大小和图片的内容也有关系。
3、在保留位图头文件的前提下替换位图的数据为所要隐藏的数据,缺点是生成的文件是杂乱的,由一个个杂色点所组成的图片,没有任何意义的图片。
这三种方法是最常见的,而我的方法与这些都不同,主要的优点是图片的体积近乎等于所隐藏文件的体积,而且分辨率随着文件大小的而变化,完全符合图片格式规范……
首先介绍一下隐藏的原理吧:
BMP文件头 | BMP信息头 | 调色板 | 文件后缀 | 文件长度 | 图片数据
各部分所代表的含义就不做详细说明了,有兴趣的同学可以去查询相关资料。为什么要介绍位图文件的结构呢,因为我的隐藏方法需要对这里的调色板做手脚……
这样我们看到的图片才是五彩斑斓的。但是如果我们把这个调色板里所有的颜色都设定为同一种颜色,如下图,那会怎么样??
大家应该已经猜到了,图片不再是五彩斑斓的了,而是变成了一幅纯色的图片,不管图片数据区的内容如何修改,这都是一幅纯色的图片,说到这里,大家有明白隐藏文件的方法没?
好了,原理就讲到这里了,理解也好没理解也罢,直接给出程序。
程序很简单,点浏览选择你要隐藏的文件,点颜色选择输出图片的颜色,然后点开始就可以了,下方会有进度条提示转换进度。程序根目录下还有一个由4096个0和1组成的名为zw.txt的文件,这个文件你可以认为是一个密码,因为这个程序在隐藏数据的同时还对数据进行了加密,加密的算法是我在大学的时候和几个同学一起设计的一种基于MD5和矩阵变换的算法,如果zw.txt的内容和加密时不同是无法解密的。
zw.txt的内容可以修改,但必须只能由0和1组成,且固定4096个。
点击开始之后就会在所选文件目录生成一个同名的bmp文件,如果要提取文件操作相同,只不过选取的文件是加密后的文件而已。
加密后的文件类似下图,只不过颜色可以由你自己决定。隐藏文件的大小直接决定了最后输出图像文件的大小。怎么样,隐藏的还是比较深的吧,仅仅是一幅纯色的图片,谁又知道他其实别有洞天呢……