内容安全实验——实验三 信息隐藏和LSB水印实践
文章目录
前言
这系列文章均为上课时老师要求写的实验作用,若有错误,还请大家指出。实验过程有参考一些博客,具体链接找不到了。
提示:以下是本篇文章正文内容,下面案例可供参考
一、实验目的
- 了解信息隐藏的基本知识;
- 理解BMP图像格式的编码方式;
- 学会使用位图法在BMP图片中嵌入和提取信息;
- 了解数字水印;
- 熟悉LSB算法基本原理;
- 学会使用LSB水印工具对图像进行水印嵌入和提取工作;
- 通过对LSB算法源码的剖析,加深对LSB算法的理解。
二、系统环境
WinSR虚拟机、ASCII码表、UltraEdit-32、Unicode编码表、VC++6.0
三、实验原理及步骤
1、分析BMP图像文件头和信息头
(1)UltraEdit打开C:\ExpNIS\Encrypt-Lab\Tools\Watermark\BMP目录下的pic1.bmp文件。
(2)首先根据表1找到图像文件头和图像信息模块,填写表2内容。
表1 bmp图像文件头和图像信息表
表2
2、位图法隐藏和传递信息
(1)本机首先将要隐藏和传递的原始信息记录下来 杨杨杨杨 。
(2)对原始信息进行编码转换,要求:
如果要传输中文,打开汉字Unicode编码表,按照对应规则将它们转换为十六进制代码:67 68 67 68 67 68 67 68 H
再转换为二进制代码:
0110 0111 0110 1000 0110 0111 0110 1000 0110 0111 0110 1000 0110 0111 0110 1000
如果要传输英文,打开ASCII码对照表,按照对应规则将它们转换为十六进制代码,再转换为二进制代码。
「注」 因为中英文对照表不同,所以隐藏明文不能中英文混合。
请将转换完成的信息代码(二进制代码)记录在这里
0110 0111 0110 1000 0110 0111 0110 1000 0110 0111 0110 1000 0110 0111 0110 1000
原始信息长度是 04 个字符,这个长度的二进制值是 0000 0100 。
原始信息文字类型(即文件标识符) 01 ,其二进制值是 0000 0001。
(3)将原始信息长度代码和文字类型代码追加至原始信息中,然后利用位图法修改BMP图像对应的位,完成信息嵌入工作,具体操作如下:
使用UltraEdit打开图片pic1~pic5中的任意一张,找到图像数据区的开始位置。利用位图法修改BMP图像,将转换后的信息长度代码和信息代码嵌入到BMP图片中,并观察图像视觉上是否有变化。
0070开始是图像数据区,所以从这里开始
原始信息长度代码和文字类型代码的转换:
替换原来的十六进制矩阵:
原图:
修改后的图:
隐藏信息后的图片从视觉上并没有变化。
3、嵌入并提取水印
(1)所有主机进入实验平台,进入lsb工作目录(C:\ExpNIS\Encrypt-Lab\Tools\Watermark\LSB),可输入命令“lsb -h”查看lsb帮助,对部分参数使用说明见表3。
表3
使用lsb工具查看picture目录中的pic1.bmp文件大小 2359296 字节,其最多可以嵌入 589818 字节数据。
启动密码工具,进入“加密解密”|“MD5哈希函数”|“生成摘要”页签,计算图像文件picture/watermark.bmp的文件摘要。
watermark.bmp的文件摘要是:
73 39 bf de e7 46 03 cc 02 40 cf 81 f6 a2 89 03 b7 23 6c 4a 。
(2)备份图片pic1.bmp,名为pic1_bak.bmp。
(3)将watermark.bmp嵌入至图像文件pic1.bmp中,在成功完成嵌入操作后,再次查看pic1.bmp文件大小 2359296 字节,对比嵌入前后图像大小变化情况 不变 。
(4)浏览pic1_bak.bmp和嵌入水印后的pic1.bmp图像,视觉上对比图像变化。
视觉上对比图像变化:不变
用UltraEdit同时打开两张图片,选择“文件”|“比较文件”,然后在弹出的比较文件对话框中选择“二进制”,单选“比较”按钮打开文件比较页面。UltraEdit会用特殊颜色标出两张图片数据的不同之处。
4、LSB水印算法
查看程序是否读取出图片文件信息。截图
进入debug目录,输入命令:lsb -i C:\ExpNIS\Encrypt-Lab\Tools\Watermark
LSB\picture\pic1.bmp。将输出的结果与步骤一|
实验结果进行比较,验证代码正确性。
进入LSB工作目录,运行lsb.exe将picture\watermark.bmp嵌入到pic3.bmp文件中。回到lsb工程目录(debug目录),输入命令:lsb -x C:\ExpNIS\Encrypt-Lab\Tools\Watermark\LSB\picture\pic3.bmp watermark.bmp,提取水印。如果提取正确,说明填入的代码无误。
总结
在本次实验中我了解数字水印;理解BMP图像格式的编码方式;学会使用位图法在BMP图片中嵌入和提取信息,也学会使用LSB水印工具对图像进行水印嵌入和提取工作。在实验的过程中碰到过一些小问题,但也大都解决了。
版权归原作者 是榛子耶~ 所有, 如有侵权,请联系我们删除。