《LSB信息隐藏实验报告.docx》由会员分享,可在线阅读,更多相关《LSB信息隐藏实验报告.docx(21页珍藏版)》请在三一办公上搜索。
1、Central South University信息隐藏实验报告学院:信息科学与工程学院班级:信息安全1201 学号:0909121724姓名:吕秋言时间: 2018年6月实验一:基于图像的LSB信息隐藏一、实验目的该实验为验证性实验。目的是通过实验使学生掌握经典信息隐 藏算法,在Matlab环境下,编写基于图像的LSB信息隐藏算法程序。 用Matlab函数实现LSB信息隐藏及提取,并进行分析。b5E2RGbCAP二、实验要求1、实验前要做好充分准备,包括:复习实验所涉及的知识点, 掌握Matlab编程语言和调试环境。2、实验时注意记录实验过程中产生的数据、出现的问题及解决 问题的方法。3、理
2、论联系实际,认真分析实验结果,回答思考题。4、实验后完成实验报告,并附相关截图。三、实验环境计算机安装Visual C+ 6.0和Matlab 6.5以上版本)四、实验原理隐秘算法核心是将我们选取的像素点的最不重要位依次替换成 秘密信息,以达到信息隐秘的目的。嵌入过程包括选择一个图像载体 像素点的子集j1,jl(m,然后在子集上执行替换操作像素 cji - mi,即把cji的LSB与秘密信息mi进行交换(mi可以是1或 0。一个替换系统也可以修改载体图像像素点的多个比特,例如,在 一个载体元素的两个最低比特位隐藏两比特、三比特信息,可以使得 信息嵌入量大大增加但同时将破坏载体图像的质量。在提取
3、过程中, 找出被选择载体图像的像素序列,将LSB(最不重要位排列起来重构 秘密信息,算法描述如下:plEanqFDPw嵌入过程:for(i=1i=像素序列个数i+sicifor(i=1。i将选取的像素点的最不重要位依次替换成秘密信息 sjicji fmi提取过程:for(i=1i五、实验内容与步骤 基本演示 环境:matlabLSB,Least Significant Bits,最低有效位,将图像加密处理。这次将通过位平面的切割之后,嵌入一张隐私图片,一些人的隐私交流很有可能通过这个,比如美国的某某人,当然这个只 是最简单的。DXDiTa9E3d位平面切割是将数字图像分解为位平面,比如上一篇文
4、章讲到的图片的8位的数据类型,可以让我们每一位所起的作用。一边学的时候也带着疑问,为什么用bitget呢。RTCrpUDGiT经过实验也证明自己的想法是正确的,首先bitget(X,Y是拿到X二进制的值的Y位。plainview plaincopyc1. bitget(1,12.3 ans 3.4.5.6.7 bitget(1,28.Q ans10.11.12.13. 那么我们可以想想,一幅8位的数字图像无符号类型),最高是 11111111二进制),即28 - 1,255,用大腿一想,当然是第八位 起决定性作用,假如有一百万零一这个数字,少了最前面的一个一 和最后面的一个一可是两码事。5PC
5、zVD7HxA举个例子,我切除图像的一部分:plainview plaincopyc1.q = f(122:130,122:130。2.imwrite(q,verysmall.jpg。3.f = imread(verysmall.jpg4.5.6.7.1551541491411341291291301278.1711691661611571541541541489.68173163171170170171171169110.69165165164164167170172171111.71166168166167169171172172112.70174175175175174170169169
6、113.64179172182181174164159160114.60184161186185174160152155115.481821491851801671541491481每个像素点的值这么大。接下来:plain view plaincopy1 t = bitget(f,8最高位是决定性作用的一层。所以,要嵌入图像,就要嵌入到第一层,影响最小。plain view plaincopy1 f = imread(lina.jpg。2 g = bitget(f,8。这样g虽然是第八层的图像,但是都是二进制最高位的值,非0即1,而在为灰度图像看来,都是黑色。需要转换成二值图像。jLBHrnA
7、ILgplain view plaincopy1 t = logical(g。接下来,我把自己的话嵌入到照片中。plain view plaincopy1 b = imread(love.jpg。2 c = im2bw(b。这次是反过来,我们是要把一幅8位数据类型的图像嵌入到位图中,那首先要把8位的数据转换成二进制,用上面的im2bw。xHAQX74J0X先看看嵌入到影响最大的一层的效果如何:plain view plaincopy1 w = bitset(a,8,c。.2 imshow(w .F&ue 1File Edit View Insert Tools Desktop Window H
8、elp接下来,嵌入到第一层:plain view plaincopyc1. w = bitset(a,1,c。2. imshow(wFciure几乎是看不到什么的,当你想看看你嵌入什么图像时,只需要把被File Edit View Insert Tools Desktop Window Help替换的第一层取出。plainview plaincopye1. y = bitget(w,1。2. imshow(logical(y1、随机选取图像载体像素,实现隐秘消息的嵌入与提取。%在LSB隐秘消息for i=1:len_totalste_cover(row(i,col(i=ste_cover(ro
9、w(i,col(i-mod(ste_cover(row(i,col(i,2+msg(p,1。 dvzfvkwMI1if p=len_totalbreakoendp=p+1oendste_cover=uint8(ste_coveroimwrite(ste_cover,output。%显示实验结果subplot(1,2,1。imshow(cover。title(,原始图像,。subplot(1,2,2。imshow(outputotitle(z 隐藏信息的图像,。E=double(E/255。%将两图像矩阵相减,显示效果%注意,MATLAB中矩阵相减只支持double型imshow(mat2gra
10、y(F rqyn14ZNXI%参数说明:%output是信息隐秘后的图像%len_total是秘密消息的长度%goalfile是提取出的秘密消息文件%key是随机间隔函数的密钥%result是提取的消息functionresult二randlsbget(output,len_total,goalfile,keyEmxvxOtOcoste_cover二imread(output。ste_cover二double(ste_cover。%判断嵌入消息量是否过大m,n=size(ste_cover。frr二fopen(goalfile,a。%p作为消息嵌入位数计数器,将消息序列写回文本文件p=1。%调
11、用随机间隔函数选取像素点row,col=randinterval(ste_cover,len_total,key。for i=1:len_totalifbitand(ste_cover(row(i,col(i,1=1fwrite(frr,1,bit1。result(p,1=1。elsefwrite(frr,0,bit1。result(p,1=0。endif p=len_totalbreakoendp=p+1oendfclose(frro2、顺序选取图像载体像素,实现隐秘消息的嵌入与提取1)隐秘消息的嵌入%文件名:lsbhide.m%函数功能:本函数将完成在LSB上的顺序信息隐秘,载体选用灰度B
12、MP图%输入格式举例:ste_cover,len_total=lsbhide(glenna.bmp,message.txt,scover.bmpSixE2yXPq5%参数说明:%input是信息隐蔽载体图像,为灰度BMP图%file是秘密消息文件%output是信息隐秘后生成图像%ste_cover是信息隐秘后图像矩阵%len_total是秘密消息的长度,即容量functionste_cover,len_total=lsbhide(input,file,output6ewMyirQFL%读入图像矩阵cover二imread(input。ste_cover二cover。ste_cover二dou
13、ble(ste_cover。%将文本文件转换为二进制序列f_id=fopen(file,r。msg,len_total=fread(f_id,ubit1。%判断嵌入消息量是否过大m,n=size(ste_cover。iflen_totalm*nerror(嵌入消息量过大,请更换图像。end%p作为消息嵌入位数计数%生成信息隐秘后图像imwrite(ste_cover,output。%显示实验结果subplot(1,2,1。imshow(covertitle(,原始图像,。subplot(1,2,2。imshow(outputtitle(,隐藏信息的图像,。2)调用函数compare.m比较两幅
14、图像区别%文件名:lsbget.m%函数功能:本函数将完成提取隐秘于LSB上的秘密消息%输入格式举g:result=lsbget(scover.bmp,56,secret.txtkavU42VRU s%参数说明:%output是信息隐秘后的图像%len_total是秘密消息的长度%goalfile是提取出的秘密消息文件%result是提取的消息functionresult=lsbget(output,len_total,goalfileste_cover二imread(output。ste_cover二double(ste_cover。%判断嵌入消息量是否过大m,n=size(ste_cover。frr二fopen(goalfile,a。%p作为消息嵌入位数计数器,将消息序列写回文本文件六:实验小结:通过这次实验使我掌握经典信息隐藏算法,在Matlab环境下, 编写基于图像的LSB信息隐藏算法程序。用Matlab函数实现LSB信 息隐藏及提取,并进行分析,对顺序嵌入隐秘消息和随机嵌入隐秘 消息两种方法的实现结果进行比较。通过比较可得,顺序嵌入隐秘消息比随机嵌入隐秘消息更有序,代码更复杂,要求更严格,同时 隐秘性也更好。y6v3ALoS89申明:所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。