LSB信息隐藏实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C
entr al South University
信息隐藏
实验报告
学院: 信息科学与工程学院
班级:信息安全1201
学号:0909121724
姓名:吕秋言
时间: 2018年6 月
实验一:基于图像的LSB信息隐藏
一、实验目的
该实验为验证性实验。目的是通过实验使学生掌握经典信息隐
藏算法,在Matlab环境下,编写基于图像的LSB信息隐藏算法程序。用Matlab函数实现LSB信息隐藏及提取,并进行分析。b5E2RGbCAP
二、实验要求
1、实验前要做好充分准备,包括:复习实验所涉及的知识点,
掌握Matlab编程语言和调试环境。
2、实验时注意记录实验过程中产生的数据、出现的问题及解决
问题的方法。
3、理论联系实际,认真分析实验结果,回答思考题。
4、实验后完成实验报告,并附相关截图。
三、实验环境
计算机<安装Visual C++ 6.0和Matlab 6.5以上版本)
四、实验原理
隐秘算法核心是将我们选取的像素点的最不重要位依次替换成秘密信息,以达到信息隐秘的目的。嵌入过程包括选择一个图像载体像素点的子集{j1,…,jl(m>},然后在子集上执行替换操作像素
cji←→mi,即把cji的LSB与秘密信息mi进行交换(mi可以是1或0>。一个替换系统也可以修改载体图像像素点的多个比特,例如,在一个载体元素的两个最低比特位隐藏两比特、三比特信息,可以使得信息嵌入量大大增加但同时将破坏载体图像的质量。在提取过程中,找出被选择载体图像的像素序列,将LSB(最不重要位>排列起来重构秘密信息,算法描述如下:p1EanqFDPw
嵌入过程:for(i=1。i<=像素序列个数。i++>
si←ci
for(i=1。i<=秘密消息长度。i++>
//将选取的像素点的最不重要位依次替换成秘密信息
sji←cji←→mi
提取过程:for(i=1。i<=秘密消息长度。i++>
{ i←→ji//序选取
mi←LSB(cji>
}
五、实验内容与步骤
基本演示
环境:matlab
LSB,Least Significant Bits,最低有效位,将图像加密处理。
这次将通过位平面的切割之后,嵌入一张隐私图片,一些人的隐私交流很有可能通过这个,比如美国的某某人,当然这个只是最简单的。DXDiTa9E3d
位平面切割是将数字图像分解为位平面,比如上一篇文章讲到的图片的8位的数据类型,可以让我们每一位所起的作用。一边学的时候也带着疑问,为什么用bitget呢。RTCrpUDGiT
经过实验也证明自己的想法是正确的,首先
bitget(X,Y>是拿到X二进制的值的Y位。
[plain] view plaincopy
1.>> bitget(1,1>
2.
3.ans =
4.
5. 1
6.
7.>> bitget(1,2>
8.
9.ans =
10.
11.0
12.
13.>>
那么我们可以想想,一幅8位的数字图像<无符号类型),最高是11111111<二进制),即2^8 - 1,255,用大腿一想,当然是第八位起决定性作用,假如有一百万零一这个数字,少了最前面的一个一和最后面的一个一可是两码事。5PCzVD7HxA
举个例子,我切除图像的一部分:
[plain] view plaincopy
1.>> q = f(122:130,122:130>。
2.>> imwrite(q,'verysmall.jpg'>。
3.>> f = imread('verysmall.jpg'>
4.
5. f =
6.
7.155 154 149 141 134 129 129 1
30 127
8.171 169 166 161 157 154 154 1
54 148
9.173 171 170 170 171 171 169 1
68 163
10.165 164 164 167 170 172 171 1
69 165
11.166 166 167 169 171 172 172 1
71 168
12.174 175 175 174 170 169 169 1
70 175
13.179 182 181 174 164 159 160 1
64 172
14.184 186 185 174 160 152 155 1
60 161
15.182 185 180 167 154 149 148 1
48 149
每个像素点的值这么大。
接下来:
[plain] view plaincopy
1.>> t = bitget(f,8>
2.
3.t =
4.
5. 1 1 1 1 1 1
1 1 0
6. 1 1 1 1 1 1
1 1 1
7. 1 1 1 1 1 1
1 1 1
8. 1 1 1 1 1 1
1 1 1
9. 1 1 1 1 1 1
1 1 1
10. 1 1 1 1 1 1
1 1 1
11. 1 1 1 1 1 1
1 1 1
12. 1 1 1 1 1 1
1 1 1
13. 1 1 1 1 1 1
1 1 1
14.
15.>>