什么是“隐写”
“隐写”,即人们通常所说的信息隐藏,是利用人类感觉器官的不敏感性(感觉冗余),以及多媒体数字信号本身存在的冗余(数据冗余特性),将秘密信息隐藏于载体信号之中的技术。秘密信息被隐藏后,不易被察觉并且不影响载体信号的感官效果和使用价值。秘密信息可以是文本、声音或图像等,载体信号可以是数字图像、文本、音频和视频文件等。隐写技术的不易察觉性,保证了隐藏信息在传输过程中不会引起注意,从而降低了秘密通信被发现的可能。
隐写的首要目标是隐蔽,也就是使加入秘密信息后的公开信息的降质尽可能小,使人无法觉察出隐藏的数据。隐写提供了一种有别于加密的安全模式,其目的不同于传统加密,不在于限制正常的数据使用,而在于保证隐藏的数据不被侵犯和觉察。隐写技术与传统的加密技术的区别关键在于:传统的加密技术仅仅隐藏了信息的内容,而隐写技术不但隐藏了信息的内容而且隐藏了信息的存在。
举一个简单的例子:在BMP图片中,一个8bit的数据代表一个像素点,在这样的图片中,人眼是无法识别11111111和11111110所代表的红色的。这里做一个定义:用来隐藏秘密信息(或信息块)的载体的二进制最小位数,称为“最低有效位”(The Least Significant Bit,LSB)。上述BMP图片的例子中,LSB即为8。
F5隐写工具的使用
在这里,我尝试着在Windows 10系统上运行该工具。
一、在GitHub上下载F5隐写工具,下载链接为https://github.com/matthewgao/F5-steganography。下载完成后解压(本例中,我将其解压至D盘根目录):
编辑切换为居中
添加图片注释,不超过 140 字(可选)
打开D:\F5-steganography-master文件夹,其中几个主要的程序(文件)为:
(1)Embed.java:用于将信息嵌入图像文件的主程序;
(2)Extract.java:用于将隐藏信息从图像文件载体中提取的主程序;
(3)bin.noise:该文件含有需要隐藏的信息;
(4)e:将指定信息(bin.noise)嵌入指定图像文件(lopez.bmp)的演示程序脚本;
(5)e.bat:将指定信息(bin.noise)嵌入指定图像文件(lopez.bmp)的批处理演示程序;
(6)d:将隐藏信息从图像文件(lopez.jpg)中提取到指定文件(output.txt)的演示程序脚本;
(7)d.bat:将隐藏信息从图像文件(lopez.jpg)中提取到指定文件(output.txt)的批处理演示程序。
以上程序均可用记事本程序(notepad.exe)打开查看内容。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
二、安装Java运行环境
<