基于Matlab的LSB信息隐藏技术
信息隐藏实验三LSB图像信息隐藏剖析
实验三:LSB图像信息隐藏一、实验目的了解信息隐藏中最常用的LSB算法的特点,掌握LSB算法原理,设计并实现一种基于图像的LSB隐藏算法;了解如何通过峰值信噪比来对图像进行客观评价,并计算峰值信噪比值。
二、实验环境(1)Windows 7操作系统;(2)MATLAB R2012b版本软件;(3)BMP格式灰度图像文件。
三、原理简介任何多媒体信息在数字化时都会产生物理随机噪声,而人的感官系统对这些随机噪声并不敏感。
替换技术就是利用这个原理,通过使用秘密信息比特替换随机噪声,从而实现信息隐藏目的。
在BMP灰度图像的位平面中,每个像素值为8比特二进制,表示该点亮度。
图像高位平面对图像感官质量起主要作用,去除图像最低几个位平面并不会造成画面质量的明显下降。
利用这个原理可用秘密信息(或称水印信息)替代载体图像低位平面以实现信息嵌入。
本算法选用最低位平面来嵌入秘密信息。
最低位平面对图像的视觉效果影响最轻微,但很容易受噪声影响和攻击,可采用冗余嵌入的方式来增强稳健性加以解决,即在一个区域(多个像素)中嵌入相同的信息,提取时根据该区域中的所有像素判断。
四、实验步骤1. 隐藏提取及测试算法分为三个部分实现:(1)隐藏算法;(2)提取算法;(3)测试脚本。
1)隐藏算法源代码hide_lis.m如下:function o = hide_lsb(block,data,I)%function o = hide_lsb(block,data,I)%隐藏提取及测试%block:隐藏的最小分块大小%data:秘密信息%I:原始载体si = size(I);lend = length(data);N = floor(si(2)/block(2));%将图像划分为M*N个小块M = min(floor(si(1)/block(1)),ceil(lend/N));o = I;for i = 0 : M-1 %计算每小块隐藏的秘密信息rst = i*block(1) + 1;red = (i+1)*block(1);for j = 0 : N-1 %计算每小块隐藏的秘密信息的序号idx = i*N + j + 1;if idx > lendbreak;end%取每小块隐藏的秘密信息bit = data(idx);%计算每小块水平方向起止位置cst = j*block(2) + 1;ced = (j+1)*block(2);%将每小块最低位平面替换为秘密信息o(rst:red,cst:ced) = bitset(o(rst:red,cst:ced),1,bit);endend2)提取算法源代码dh_lsb.m如下:function out = dh_lsb(block,I)%function out = dh_lsb(block,I)%源代码dh_lsb.m如下:%block:隐藏的最小分块大小%I:携密载体si = size(I);%将图像划分为M*N个小块N = floor(si(2)/block(2));M = floor(si(1)/block(2));out = [];%计算比特1判决阀值:每小块半数以上元素隐藏是比特1时,判决该小块嵌入信息为1thr = ceil((block(1)*block(2) + 1)/2);idx = 0;for i = 0 : M-1%计算每小块垂直方向起止位置rst = i*block(1) + 1;red = (i+1)*block(1);for j = 0 : N-1%计算每小块将要数据的秘密信息的序号idx = i*N + j + 1;%计算每小块水平方向起止位置cst = j*block(2) + 1;ced = (j + 1)*block(2);%提取小块最低位平面,统计1比特个数,判决输出秘密信息 tmp = sum(sum(bitget(I(rst : red,cst : ced),1)));if (tmp >= thr)out(idx) = 1;elseout(idx) = 0;endendend3)测试脚本源代码test.m如下:fid = 1;len = 10;%随机生成要隐藏的秘密信息d = randsrc(1,len,[0 1]);block = [3,3];[fn,pn] = uigetfile({'* .bmp','bmp file(* .bmp)';},'选择载体');s = imread(strcat(pn,fn));ss = size(s);if (length(ss) >= 3)I = rgb2gray(s);elseI = s;endsi = size(I);sN = floor(si(1)/block(1))*floor(si(2)/block(2));tN = length(d);%如果载体图像尺寸不足以隐藏秘密信息,则在垂直方向上复制填充图像if sN < tNmultiple = ceil(tN/sN);tmp = [];for i = 1 : multipletmp = [tmp;I];endI = tmp;end%调用隐藏算法,把携密载体写至硬盘stegoed = hide_lsb(block,d,I);imwrite(stegoed,'hide.bmp','bmp');[fn,pn] = uigetfile({'*.bmp','bmp file(*.bmp)';},'选择隐蔽载体');y = imread(strcat(pn,fn));sy = size(y);if (length(sy) > 3)I = rgb2gray(y);elseI=y;end%调用提取算法,获得秘密信息out = dh_lsb(block,I);%计算误码率len = min(length(d),length(out));rate = sum(abs(out(1:len)-d(1:len)))/len;y = 1 - rate;fprintf(fid,'LSB:len:% d\t error rate:% f\t error num:% d\n',len,rate,len*rate);2. 计算峰值信噪比(1)峰值信噪比定义:2,2,,,,max ()x y x y x y x yx y p PSNR XY p p =-∑(2)峰值信噪比函数。
LSB图片信息隐藏隐藏实验
上海电力学院高级程序设计(C)课程设计报告LSB信息隐藏实验题目:院系:计算机科学与技术学院专业年级:信息安全2012级学生姓名:涂桂花学号:指导教师:魏为民2015年4月14日目录一、实验目的 0二、实验内容和步骤 01. 操作环境 02. 系统配置 03. 操作步骤 04. 程序源代码 (3)三、实验结果 (3)1. 测试图片 (3)2. 测试结果 (3)3.截屏 (4)四.实验小结 (4)1. 遇到的问题总结合分析: (4)2. 未解决的问题 (4)3. 实验效果和分析 (4)4. 总结: (4)附件: (5)上 海 电 力 学 院实 验 报 告 课程名称实验项目 姓名 学号 班级 专业同组人姓名 指导教师 魏为民 实验日期 一、实验目的1.用MATLAB 函数实现LSB 信息隐藏和提取。
2.了解信息隐藏的作用和实现方法原理。
3.学会分析了解隐藏算法。
二、实验内容和步骤如操作环境、系统配置、操作步骤、程序源代码等。
1.操作环境操作系统 Windows 7 旗舰版 64位 SP1 ( DirectX 11 )2.系统配置处理器 AMD E1-2100 APU with Radeon HD Graphics 双核3.操作步骤1) 打开MATLAB 软件,新建文件夹名为“ LSB ”。
2) 在“Command Window ”窗口里输入“guide ”,回车。
a. 如下图所示建立图形界面。
将5个push button 控件的“String ”属性设置为下图相应显示的名字,Tag 属性设置为pbt+String 名的格式。
将4个axec 控件的Tag 属性设置为如下图所显示的名字。
3) 分别右键点击5个push button 控件,View Callbacks->CallBacks.给每个控件添信息安全 LSB 信息隐藏实验 涂桂花 20123333 2012252 信息安全 无加Callback代码。
基于LSB算法的图像信息隐藏与检测
基于LSB算法的图像信息隐藏与检测数字图像隐写分析基于LSB算法的图像信息隐藏与检测学院名称计算机科学与技术学院专业班级学⽣姓名学号指导教师2016.05.01基于LSB算法的图像信息隐藏与检测摘要:LSB替换隐写基本思想是⽤嵌⼊的秘密信息取代载体图像的最低⽐特位,原来的的7个⾼位平⾯与替代秘密信息的最低位平⾯组合成含隐藏信息的新图形。
⽂章⾸先简单叙述了BMP位图⽂件的⽂件格式,然后根据24位真彩⾊BMP位图格式与显⽰⽅式的特殊性,直接改变图像中像素的最后⼀位值来嵌⼊秘密⽂件,提出了⼀种对⽂字信息进⾏加密的有效⽅案。
关键词:LSB,信息隐藏,信息安全,BMP位图Image information hiding and detection based on LSBalgorithmAbstract: LSB replacement steganography basic idea is to use the embedded secret information to replace the image of the lowest bits, the original 7 high plane and the least significant bit plane of alternative secret information into new graphics containing hidden information.This paper simple describes the BMP file format of the bitmap file, and then according to the 24 true color BMP bitmap format and the particularity of display mode, directly change the values of pixels in the image of the last to embed secret files, puts forward a effective scheme of text information is encrypted.Key words: LSB, Information hiding,information security,bit map file⽬录第1章绪论 (5)1.1 LSB算法原理 (5)第2章 LSB隐写实现 (7)2.1 LSB隐藏过程 (7)2.2 LSB隐写实例效果 (8)第3章 LSB信息提取 (10)3.1 LSB信息提取过程 (10)3.2 LSB信息提取实例效果 (10)参考⽂献 (13)第1章绪论1.1 LSB算法原理LSB是L.F.Turner和R.G.van Schyndel等⼈提出的⼀种典型的空间域信息隐藏算法。
本科毕业设计-基于lsb的信息隐藏技术的实现
引言信息隐藏将在未来网络中保护信息不受破坏方面起到重要作用,信息隐藏是把机密信息隐藏在大量信息中不让对手发觉的一种方法。
信息隐藏的方法有很多种,基于图象的信息隐藏检测技术是隐写分析技术的基础,对于保障网络信息安全和提高信息隐藏算法的安全性具有重要意义。
最低有效位算法LSB(Least significant bit)是一种简单而通用的信息隐藏方法,大部分的多媒体文件(如图像、音频和视频文件等)都可作为LSB算法中的载体。
本文讨论以图像为载体的LSB隐藏算法。
第一章绪论1.1 信息隐藏技术的来源随着互联网的迅速发展,网上提供服务越来越丰富,人们如今可以通过因特网发布自己的作品、重要信息和进行网络贸易等,但是随之而出现的问题也十分严重:如作品侵权更加容易,篡改也更加方便。
计算机和通信网技术的发展与普及,数字音像制品以及其他电子出版物的传播和交易变得越来越便捷,但随之而来的侵权盗版活动也呈日益猖獗之势。
因此如何既充分利用因特网的便利,又能有效地保护知识产权,已受到人们的高度重视。
信息隐藏技术作为网络安全技术的一个重要新兴课题,内容涉及数据隐藏、保密通信、密码学等相关学科领域,作为隐蔽通信和知识产权保护等的主要手段,正得到广泛的研究与应用。
为了打击犯罪,一方面要通过立法来加强对知识产权的保护,另一方面必须要有先进的技术手段来保障法律的实施。
信息隐藏技术以其特有的优势,引起了人们的好奇和关注。
人们首先想到的就是在数字产品中藏入版权信息和产品序列号,某件数字产品中的版权信息表示版权的所有者,它可以作为侵权诉讼中的证据,而为每件产品编配的唯一产品序列号可以用来识别购买者,从而为追查盗版者提供线索。
此外,保密通信、电子商务以及国家安全等方面的应用需求也推动了信息隐藏研究工作的开展。
中国自古就有这样的谚语,叫做“耳听是虚,眼见为实”,“百闻不如一见”,英语中也有“Seeing is believing”的说法。
这些都表明人们往往过分相信自己的眼睛,而这正是信息隐藏技术得以存在和发展的重要基础,在这一研究领域,大量事实告诉人们:眼见不一定为实!1.2信息隐藏技术的发展1.2.1历史上的隐写术现代信息隐藏技术是由古老的隐写术(Steganography)发展而来的,隐写术一词来源于希腊语,其对应的英文意思是“Covered writing”。
基于matlab的信息隐藏代码实现
Matlab期中作业标题:基于matlab的信息隐藏代码实现姓名:********班级:********学号:********目录摘要----------------------------------------------------------------------------------------------------------------------------- - 2 -前言----------------------------------------------------------------------------------------------------------------------------- - 2 -一、图像隐藏技术的研究现状 ------------------------------------------------------------------------------------ - 2 -二、实现图像隐藏的主要算法 ------------------------------------------------------------------------------------ - 4 -三、基于行列变换的图像置乱与反置乱算法 ---------------------------------------------------------------- - 4 -3.1 图像置乱算法 ----------------------------------------------------------------------------------------------------- - 4 -3.2 图像反置乱算法-------------------------------------------------------------------------------------------------- - 5 -四、基于m序列的图像加密与解密算法----------------------------------------------------------------------- - 5 -五、相关程序代码及运行结果 ------------------------------------------------------------------------------------ - 5 -5.1 源代码 --------------------------------------------------------------------------------------------------------------- - 5 -5.2 运行结果 ------------------------------------------------------------------------------------------------------------ - 7 -六、参考文献------------------------------------------------------------------------------------------------------------ - 8 -七、总结 ------------------------------------------------------------------------------------------------------------------ - 8 -摘要【摘要】近几年来,国际上提出一种新的关于信息安全的概念——信息隐藏技术。
实验三 基于LSB的信息隐藏算法
实验三基于LSB的信息隐藏算法一、实验目的该实验为验证性实验。
目的是通过实验使学生掌握经典信息隐藏算法,在Matlab环境下,编写基于图像的LSB信息隐藏算法程序。
用Matlab函数实现LSB信息隐藏及提取,并进行分析。
二、实验要求1、实验前要做好充分准备,包括:复习实验所涉及的知识点,掌握Matlab 编程语言和调试环境。
2、实验时注意记录实验过程中产生的数据、出现的问题及解决问题的方法。
3、理论联系实际,认真分析实验结果,回答思考题。
4、实验后完成实验报告,并附相关截图。
三、实验环境计算机(安装Visual C++ 6.0和Matlab 6.5以上版本)四、实验原理隐秘算法核心是将我们选取的像素点的最不重要位依次替换成秘密信息,以达到信息隐秘的目的。
嵌入过程包括选择一个图像载体像素点的子集{j1,…,j l(m)},然后在子集上执行替换操作像素c ji←→m i,即把c ji的LSB与秘密信息m i进行交换(m i可以是1或0)。
一个替换系统也可以修改载体图像像素点的多个比特,例如,在一个载体元素的两个最低比特位隐藏两比特、三比特信息,可以使得信息嵌入量大大增加但同时将破坏载体图像的质量。
在提取过程中,找出被选择载体图像的像素序列,将LSB(最不重要位)排列起来重构秘密信息,算法描述如下: 嵌入过程:for(i=1;i<=像素序列个数;i++)s i←c ifor(i=1;i<=秘密消息长度;i++)//将选取的像素点的最不重要位依次替换成秘密信息s ji←c ji←→m i提取过程:for(i=1;i<=秘密消息长度;i++){ i←→j i //序选取m i←LSB(c ji)}五、实验内容与步骤1、随机选取图像载体像素,实现隐秘消息的嵌入与提取(1)隐秘消息的嵌入%文件名:randlsbhide.m%函数功能:本函数将完成随机选择LSB的信息隐秘,载体选用灰度BMP图%输入格式举例:[ste_cover,len_total]=randlsbhide(′glenna.bmp′,′message.txt′,′scover.bmp′,2001)%参数说明:%input是信息隐蔽载体图像%file是秘密消息文件%output是信息隐秘后的生成图像%key是随机间隔函数的密钥function[ste_cover,len_total]=randlsbhide(input,file,output,key)%读入图像矩阵cover=imread('lena.bmp');ste_cover=cover;ste_cover=double(ste_cover);%将文本文件转换为二进制序列f_id=fopen('1.txt','r');[msg,len_total]=fread(f_id,'ubit1');%判断嵌入消息量是否过大[m,n]=size(ste_cover);if len_total>m*nerror('嵌入消息量过大,请更换图像');end%p作为消息嵌入位数计数p=1;%调用随机间隔函数选取像素点[row,col]=randinterval(ste_cover,len_total,2001);%在LSB隐秘消息for i=1:len_totalste_cover(row(i),col(i))=ste_cover(row(i),col(i))-mod(ste_cover(row(i),col(i)),2)+msg (p,1);if p==len_totalbreak;endp=p+1;endste_cover=uint8(ste_cover);imwrite(ste_cover,'lena2.bmp');%显示实验结果subplot(1,2,1);imshow(cover);title('原始图像');subplot(1,2,2);imshow('lena2.bmp');title('隐藏信息的图像');(2)编写函数比较两幅图像区别%文件名:compare.m%函数功能:本函数完成显示隐秘前后两幅图像的区别%输入格式举例:F=compare(′blenna.bmp′,′scover.bmp′) %参数说明:%original是原始载体图像%hided是隐秘后的图像%F是差值矩阵function F=compare(original,hided)%读取原始载体图像矩阵W=imread('lena.bmp');W=double(W)/255;%读取隐秘后图像矩阵E=imread('lena2.bmp');E=double(E)/255;%将两图像矩阵相减,显示效果F=E-W;%注意,MATLAB中矩阵相减只支持double型imshow(mat2gray(F))(3)隐秘消息的提取%文件名:randlsbget.m%函数功能:本函数将完成提取隐秘于LSB上的秘密消息%输入格式举例:result=randlsbget(′scover.jpg′,56,′secret.txt′,2001) %参数说明:%output是信息隐秘后的图像%len_total是秘密消息的长度%goalfile是提取出的秘密消息文件%key是随机间隔函数的密钥%result是提取的消息function result=randlsbget(output,len_total,goalfile,key)ste_cover=imread('lena2.bmp');ste_cover=double(ste_cover);%判断嵌入消息量是否过大[m,n]=size(ste_cover);frr=fopen('2.txt','a');%p作为消息嵌入位数计数器,将消息序列写回文本文件p=1;%调用随机间隔函数选取像素点[row,col]=randinterval(ste_cover,128,2001);for i=1:128if bitand(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==128break;endp=p+1;endfclose(frr);2、顺序选取图像载体像素,实现隐秘消息的嵌入与提取(1)隐秘消息的嵌入%文件名:lsbhide.m%函数功能:本函数将完成在LSB上的顺序信息隐秘,载体选用灰度BMP图%输入格式举例:[ste_cover,len_total]=lsbhide(′glenna.bmp′,′message.txt′,′scover.bmp′)%参数说明:%input是信息隐蔽载体图像,为灰度BMP图%file是秘密消息文件%output是信息隐秘后生成图像%ste_cover是信息隐秘后图像矩阵%len_total是秘密消息的长度,即容量function[ste_cover,len_total]=lsbhide(input,file,output,key)%读入图像矩阵cover=imread('lena.bmp');ste_cover=cover;ste_cover=double(ste_cover);%将文本文件转换为二进制序列f_id=fopen('1.txt','r');[msg,len_total]=fread(f_id,'ubit1');%判断嵌入消息量是否过大[m,n]=size(ste_cover);if len_total>m*nerror('嵌入消息量过大,请更换图像');end%p作为消息嵌入位数计数p=1;%调用随机间隔函数选取像素点%[row,col]=interval(ste_cover,len_total,2001);%在LSB隐秘消息for f1=1:mfor f2=1:nste_cover(f1,f2)=ste_cover(f1,f2)-mod(ste_cover(f1,f2),2)+msg(p,1); if p==len_totalbreak;endp=p+1;endif p==len_totalbreak;endp=p+1;endste_cover=uint8(ste_cover);imwrite(ste_cover,'lena2.bmp');%显示实验结果subplot(1,2,1);imshow(cover);title('原始图像');subplot(1,2,2);imshow('lena2.bmp');title('隐藏信息的图像');(2)调用函数compare.m比较两幅图像区别%文件名:compare.m%函数功能:本函数完成显示隐秘前后两幅图像的区别%输入格式举例:F=compare(′blenna.bmp′,′scover.bmp′) %参数说明:%original是原始载体图像%hided是隐秘后的图像%F是差值矩阵function F=compare(original,hided)%读取原始载体图像矩阵W=imread('lena.bmp');W=double(W)/255;%读取隐秘后图像矩阵E=imread('lena2.bmp');E=double(E)/255;%将两图像矩阵相减,显示效果F=E-W;%注意,MATLAB中矩阵相减只支持double型imshow(mat2gray(F))(3)隐秘消息的提取%文件名:lsbget.m%函数功能:本函数将完成提取隐秘于LSB上的秘密消息%输入格式举例:result=lsbget(′scover.bmp′,56,′secret.txt′) %参数说明:%output是信息隐秘后的图像%len_total是秘密消息的长度%goalfile是提取出的秘密消息文件%result是提取的消息function result=lsbget(output,len_total,goalfile,key)ste_cover=imread('lena2.bmp');ste_cover=double(ste_cover);%判断嵌入消息量是否过大[m,n]=size(ste_cover);frr=fopen('2.txt','a');%p作为消息嵌入位数计数器,将消息序列写回文本文件p=1;%调用随机间隔函数选取像素点[row,col]=interval(ste_cover,128,2001);for f1=1:128for f2=1:128if bitand(ste_cover(f1,f2),1)==1fwrite(frr,1,'bit1');result(p,1)=1;elsefwrite(frr,0,'bit1');result(p,1)=0;endif p==128break;endp=p+1;endif p==128break;endp=p+1;endfclose(frr);实验小结:通过实验使我们掌握经典信息隐藏算法,在Matlab环境下,编写基于图像的LSB 信息隐藏算法程序。
LSB图像信息隐藏实验
学号:姓名:专业年级班级:实验室:组别:实验日期:课程名称保密技术实验实验课时实验项目名称和序号1.LSB图像信息隐藏实验同组者姓名实验目的1. 掌握对图像的基本操作。
2. 能够用 LSB 算法对图像进行信息隐藏3. 能够用 LSB 提取算法提取隐藏进图像的信息4. 能够反映 jpeg 压缩率与误码率之间的关系实验环境Windows+matlab实验内容和原理1.用 MATLAB 函数实现 LSB 信息隐藏和提取2.分析了 LSB 算法的抗攻击能力3.能随机选择嵌入位(考虑安全性因素)实验步骤方法关键代码实验算法 1:LSB 嵌入1.读取一副 256*256 大小的图片,判断是否为 RGB 图像。
若为 RGB 图像,则读取图像的一层信息(如 R 层)。
通过读取图像的尺寸大小来判断是否为RGB图像。
RGB图像是三维多彩图,size有3个参数,最小参数是3,只要判断读取到的图像大小大于2,就确定读入的是RBG图像2.以二进制形式读取要嵌入到图片里的消息。
并读取消息的长度(嵌入消息的长度不能超过图像位数)。
3.产生与消息长度一致的一串随机数(不能相同)。
自定义一个randinterval函数来实现伪随机数的生成产生的伪随机数是代表消息要隐藏的像素位置(行和列的信息)随机数代码:function [row,col]=randinterval(matrix,count,key)%randinterval.m%参数说明%matrix是载体矩阵,即要隐藏信息的图层%cout为要嵌入信息的像素数量%key为自定义秘钥,随机种子[m,n] = size(matrix);interval1 = floor(m * n/(count+eps)) + 1;interval2 = interval1 - 2;if interval2 == 0error('载体太小不能把秘密信息隐藏进去');endrand('seed',key);a = rand(1, count);row = zeros([1 count]);col = zeros([1 count]);r = 1;c = 1;row(1,1) = r;col(1,1) = c;for i =2:countif a(i) >= 0.5c = c + interval1;elsec = c + interval2;endif c > nr = r + 1;if r > merror('载体太小不能把秘密信息隐藏进去');endc = mod(c, n);if c == 0c = 1;endendrow(1, i) = r;col(1, i) = c;end4.按照产生的随机数的序列依次将图片层的最后一位改为消息的信息。
基于LSB的工程图信息隐藏方法
、 、
Au
to
CA D
、
特序 列 填 充 到 这 些 像 素 的最 低 位 上
,
t
S ig n if i c
,
a n
t
B it
) 隐写 方 法 是 出现 较 早
。
特或j
比 特信 息
可 以 使 得 信 息嵌 入 量 大大增加 但 同时
。
,
的
一
种 时域 隐写 技术 其 实 现 比较 容 易
, ,
LSB
方 法 虽 然抗
却将 破 坏 载 体 图 像 的 质 量 在 提取 过 程 中 找 出被选择 载 体 图 像 的 像 素序 列 将
J,
巾
,
不 同 分 为 空 域 隐藏算 法 和 变 换 域 隐藏 算 法 空 域 隐 藏 算 法 采 用 直 接 改 变 图像 元 素值 的 力法 的 亮 度 或 色度 中加 入 隐 藏 的 内容
只 需 对 隐秘 载 体进 行 很 小 的
,
、
( 2 )提 取 过 程
fo
r
=
:
,
收 是在 图 像 元 素
。
一
般 是 先用 软件 设 计 出 三 维 模 型 然 后 再 转 换 出
,
最 低 比特 位 ( L S B ) 隐写 方 t
j :就
各 个 零件 的二
,
维丁 程 图
。
Au
to
CA D
是 当今 最流 行 的二 维绘
。
藏算 法
。
首 先读 取 出图片 中每 个 点 的 像 素值 把 信 息 的 比
,
图软件 它 在 二 维 绘 图领 域拥 有 广 泛 的用 户群
完整word版,LSB算法实现
LSB算法实现实验报告一、实验环境1、计算机一台;2、Windows XP操作系统、MATLAB7.5二、实验内容与原理LSB(Least Significant Bit)算法是将秘密信息嵌入到载体图像像素值的最低有效位,也称最不显著位,改变这一位置对载体图像的品质影响最小。
LSB算法的基本原理:对空域的LSB做替换,用来替换LSB的序列就是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。
由于水印信息嵌入的位置是LSB,为了满足水印的不可见性,允许嵌入的水印强度不可能太高。
然而针对空域的各种处理,如游程编码前的预处理,会对不显著分量进行一定的压缩,所以LSB算法对这些操作很敏感。
因此LSB算法最初是用于脆弱性水印的。
LSB算法基本步骤:1、将得到的隐藏有秘密信息的十进制像素值转换为二进制数据;2 、用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位;3、将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像。
图1. LSB原理示意图三、实验步骤3.1信息嵌入Picture=imread(‘c:\\test.tif’); %读入载体图像Double_Picture=Picture;Double_Picture=double(Double_Picture);%将图像转换为二进制‘c:\\test.txt’_id=fopen(‘c:\\test.txt’,'r'); %读取秘密信息文件[msg,len]=fread(‘c:\\test.txt’_id,'ubit1');[m,n]=size(Double_Picture);p=1; %p 为秘密信息的位计数器for f2=1:nfor f1=1:mDouble_Picture(f1,f2)=Double_Picture(f1,f2)-mod(Double_Picture(f1,f2),2)+msg(p,1);%将秘密信息按位隐藏入连续的像素中if p==lenbreak;endp=p+1;endif p==lenbreak;endendDouble_Picture=uint8(Double_Picture);imwrite(Double_Picture,‘c:\\result.tif’); %生成秘密信息subplot(121);imshow(Picture);title(' 未嵌入信息的图片');subplot(122);imshow(Double_Picture);title(' 嵌入信息的图片');图2. 嵌入信息前后结果图3.2 信息提取Picture=imread(‘c:\\result.tif’); %读入隐秘信息的图像Picture=double(Picture);[m,n]=size(Picture);frr=fopen(‘c:\\result.txt’,'a');len=8; %设定隐秘信息长度p=1;for f2=1:nfor f1=1:mif bitand(Picture(f1,f2),1)==1%顺序提取图像相应像素LSB 的秘密信息fwrite(frr,1,'bit1');result(p,1)=1;elsefwrite(frr,0,'bit1');result(p,1)=0;endif p==len %判断秘密信息是否读完break;endp=p+1;endif p==lenbreak;endendfclose(frr);图 3 提取结果四、结论基于Matlab 实现了图像的LSB 信息隐藏算法,并讨论了两种图像像素选择算法,通过比较可以发现,使用随机选择算法会将秘密信息均匀地嵌入到整个图像中,增强了秘密信息的不可见性和破解的难度,而顺序选择算法则容易受到视觉攻击。
LSB算法的MATLAB实现
LSB算法的MATLAB实现LSB(Least Significant Bit)算法是一种隐写术,用于在图像或音频中隐藏秘密信息。
在这种方法中,最不显著的比特位被用来存储隐藏的数据,这样可以尽量不对原始图像或音频造成明显的变化。
下面是MATLAB中实现LSB算法的步骤:1. 读入原始图像:使用`imread`函数将图像读入到MATLAB中。
例如,`image = imread('original_image.png');`2. 将图像转换为灰度图像:如果原始图像是彩色图像,则需要将其转换为灰度图像。
可以使用`rgb2gray`函数实现。
例如,`gray_image = rgb2gray(image);`3.将隐藏信息转换为二进制:将要隐藏的信息转换为二进制,并将其存储为一个向量或字符串。
4.检查隐藏信息长度:检查隐藏信息的长度是否小于图像中可用的像素数量。
如果隐藏信息过长,可能无法完全嵌入到图像中。
如果需要,可以考虑压缩或加密隐藏信息。
5.将隐藏信息嵌入到图像中:对于每个像素,在最不显著的比特位中存储隐藏信息。
可以使用位操作和移位操作来实现。
例如,如果要将隐藏信息的第一个比特位嵌入到像素的最不显著比特位上,可以使用以下代码:```matlabbit = 1; % 要嵌入的隐藏信息比特pixel = 100; % 图像中的一个像素值new_pixel = bitset(pixel, 1, bit); % 将bit设置为pixel的第一个比特位```6.将修改后的像素重新组装为图像:重复上述步骤,对每个像素进行处理,然后将修改后的像素重新组装为一个新的图像。
7. 保存隐藏信息的图像:使用`imwrite`函数将隐藏信息的图像保存到硬盘上。
例如,`imwrite(new_image, 'hidden_image.png');`8.提取隐藏信息:如果需要,可以使用类似的方法从隐藏信息的图像中提取出隐藏的信息。
信息隐藏LSB算法实验报告
本科生课程考试答题本考生姓名__________考生学号_______专业班级________指导老师__________考试科目_________考试日期__年__月__日目录一、实验任务和要求 (2)1.1实验任务 (2)1.2实验要求 (2)二、实验算法LSB原理 (2)三、实验环境和采用的工具 (3)四、具体实现步骤 (3)4.1 LSB算法水印嵌入 (3)4.2 LSB算法水印提取 (4)4.3 LSB算法实验测试 (5)五、源码分析 (5)5.1 LSB算法水印嵌入 (5)5.2 LSB算法水提取 (9)5.3 计算PSNR值 (12)六、实验测试 (13)6.1 LSB水印的嵌入 (13)6.2 水印的提取 (14)6.3 对水印进行鲁棒性测试 (14)6.4 对水印进行有效性测试 (14)6.5 对水印计算PSNR值 (14)6.6 对水印容量进行分析 (15)七、结论 (15)一、实验任务和要求1.1实验任务•信息载体:每个人自己的一张外景照片;•水印信息:每个人将学号、姓名按上下两列写在白纸上,然后手机拍摄,转化为黑白图片,作为水印信息;•信息隐藏方法:LSB算法(空域或频域)。
1.2实验要求实验可采用matlab6.5以上版本(C++、Java等),程序分为嵌入与检测两部分,最好有友好的操作方式;程序代码需要注释,编码简洁可靠明了,易检查。
实验测试要求有:•需对信息处理进行鲁棒性测试;•对水印嵌入的有效性进行测试;•计算嵌入前后的PSNR值;•对水印容量进行分析。
二、实验算法LSB原理LSB是L.F.Turner和R.G.van Schyndel等人提出的一种典型的空间域信息隐藏算法。
LSB 最低有效位法(Least Significant Bit;LSB)是运用人类视觉系统无法觉察细微变化之掩蔽效果,将秘密信息隐藏在图像像素的最低位,具有计算速度快且容易秘密信息隐藏在图像像素的最低位,具有计算速度快且容易实现有点。
Matlab编程实现LSB信息的隐藏与提取
2010.111引言信息隐藏作为一门新兴学科越来越受到人们的重视,而如今成熟的信息隐藏算法基本上都是基于图像的,其中信息隐藏在图像空域中是一种最简单、有效的实现信息隐藏的手段。
Matlab 是由美国MATHWORKS 公司设计的强大的矩阵运算工具,它包含了大量的矩阵运算函数,以其强大的分析处理能力和运算能力而闻名,用以实现图像的处理非常适合。
在此介绍了一种简单的图像空域隐藏算法—LSB (最不重要位)隐秘算法。
主要是将隐秘信息嵌入到图像最不容易发觉的像素位,即最不重要位。
使用此算法的优点是隐藏效果好,不会破坏原图像的效果,隐藏信息多等,从而达到隐藏信息的目的。
2隐秘原理LSB 的嵌入方法是首先将要隐藏的信息以二进制的形式读入,再按照一定的算法选择它们要嵌入的位置。
如果要隐藏的信息的某一位为1,则它要嵌入的载体图像相应位置的像素值mod2的值为1;如果要隐藏的信息的某一位为0,则它要嵌入的载体图像相应位置的像素值mod2的值为0。
LSB 的提取方法是首先将确定隐藏信息嵌入的位置。
如果该位置的像素值mod2的值为1,则此处隐藏的信息为1;如果该位置的像素值mod2的值为0,则此处隐藏的信息为0。
但是选择选择嵌入的位置不同,抗攻击的能力是不同的,下面将介绍两种嵌入算法,并对其进行隐写分析比较。
算法一:顺序选择图像像素LSB 的嵌入算法,即将选取的像素点的最不重要位依次替换成秘密信息。
秘密消息的嵌入:for (i=1;i<=像素序列的个数;i++)Si ←Ci //Ci 为整个图像的像素集合,Si 是我们顺序选取的要隐//藏信息的像素的集合end forfor (i =1;i<=秘密信息长度;i++)S ji ←C ji ←Mi //将秘密信息Mi 存入选取的像素点Sjiend for秘密消息的提取:for (i=1;i<=像素序列的个数;i++)i ←→ji //计算存放第i 个消息位的指针jiMi ←LSB(Cji)//计算Cji 的LSB 位,恢复秘密信息end for算法二:随即选取像素点嵌入算法,即选出的嵌入信息的像素位置是随机的,这样可以增加隐秘信息的不可见性。
基于LSB的信息隐藏技术及分析
基于LSB的信息隐藏技术及分析作者:邹小敏来源:《科学与财富》2019年第15期摘要:信息隐藏是利用数字媒体本身的数据冗余性以及人类感知能力的局限性,借助密码学、混沌理论、编码压缩技术等对信息本身及隐藏位置进行保密的技术,能够使秘密信息嵌入到公开载体却不为人知,从而以“存在级”的安全级别去完成信息的安全输出,对信息起到有效的保护。
本文主要介绍基于LSB( Least Significant Bits)的信息隐藏技术的设计及性能分析。
关键词:信息隐藏;LSB;数字水印;信息安全0 前言现阶段,安全通信的实现方法主要是加密技术、安全信道技术和信息隐藏技术等,在考虑代价和安全性的情况下,信息隐藏技术的安全通信是最为安全、可靠、廉价的实现方法。
信息隐藏技术不仅可以应用公用信道,而且可以将明文隐藏到普通媒体中,使攻击者难以发现秘密信息的存在,从而真正达到安全通信的目的。
基于LSB的信息隐藏技术则是将秘密信息比特替换载体中的最低有效位,即将秘密信息替换载体中最不重要的部分,从而达到秘密信息不被发现的作用,达到安全通信的效果。
1 基于LSB的信息隐藏的概要设计基于LSB的信息隐藏的设计主要考虑不可见性和容量性的原则,以下介绍一下算法设计两个主要部分,隐藏算法和提取算法。
(1)隐藏算法:我们首先将载体图像和预隐藏的图像信息转成二进制数据,每一个像素在RGB空间下都有一个坐标值;然后我们对于载体图像像素R、G、B分量每一分量的8个bit的最后一位进行修改,每一像素总共修改3个LSB最低有效位,最后将秘密图像信息按顺序填入每一像素的3个最低有效位中,实现RGB图像的信息隐藏。
(2)提取算法:是隐藏算法的逆过程。
对隐藏后的结果图像像素的后三位按顺序进行提取,并拼接成一个字符串,然后将其转换为uint8型,最后将其输出。
2 基于LSB的信息隐藏算法的可行性分析LSB隐藏算法是基于最低位平面嵌入隐藏信息的算法,图像高位平面对图像感官质量起主要作用,去除图像最低几个位平面并不会造成画面质量的明显下降;最低位平面对图像的视觉效果影响最轻微,满足人类视觉冗余性,可以达到信息隐藏的不可见性。
LSB信息隐藏实验
实验一:LSB信息隐藏实验【实验目的】:一、掌握MATLAB基本操作二、实现LSB信息隐藏和提取【实验内容】:(请将你实验完成的项目涂“■”)实验完成形式:■ 用MATLAB函数实现LSB信息隐藏和提取□ 用MATLAB命令行方式实现LSB信息隐藏和提取□ 其它:(请注明)实验选择载体:□ 256×256灰度图像 □ 256×256RGB图像 ■ 任意大小的RGB图像实验效果和分析:■ 分析了LSB算法的抗攻击能力■ 能随机选择嵌入位(考虑安全性因素)■ 嵌入位均匀分布于载体■ 信息提取的检错/纠错■ LSB隐写分析□ 其它:(请注明)【实验工具及平台】:■ Windows+Matlab □ 其它:(请注明)【实验涉及到的相关算法】:1、与实验内容选择的项目对应;2、请使用流程图、伪代码、NS图或文字方式描述,不要..贴代码1.海明码选择得是(7,4)海明码,它可以纠正一位错误,编码和解码分别用两个函数实现,关于它的算法,这里就不赘述了。
2.为了能随机选择嵌入位,我选择了Md5函数来选择嵌入位。
选择嵌入位的时候有3个密钥参与,提高了安全性,而且使嵌入位均匀分布于载体。
3.Lsb的嵌入方法是先将要隐藏的信息以二进制的形式读入,再随机选择它们要嵌入的位置。
如果要隐藏的信息的某一位为1,则它要嵌入的载体图象相应位置的像素值mod2的值为1;如果要隐藏的信息的某一位为0,则它要嵌入的载体图象相应位置的像素值mod2的值为0。
Lsb的提取方法是先将确定隐藏信息嵌入的位置。
如果该位置的像素值mod2的值为1;则此处隐藏的信息的1,如果该位置的像素值mod2的值为0;则此处隐藏的信息的0。
下面是整个算法的流程图:提取流程图【实验分析】:1、 请尽量使用曲线图、表等反映你的实验数据及性能2、 对照实验数据从理论上解释原因3、 如无明显必要,请.不要..大量粘贴....实验效果图 1.Lsb 的抗攻击能力比较差,下图是JPEG 压缩率与隐藏信息误码率的关系曲线:由上图可以看出,当存在轻微的jpeg 压缩,lsb 的误码率就达到了50%,这就很不理想了。
基于Matlab的LSB信息隐藏技术
摘要随着科技的发展,信息安全技术已经成为不可忽略的因素。
而网络的普及及应用,让多媒体技术得到了广泛的发展,因此图像及视频的安全变得越来越重要。
本文正是在这种时代背景下,介绍一种关于图像处理的信息隐藏技术。
用于进行隐蔽通信的图像信息隐藏算法可以分为两大类:基于空域的信息隐藏算法和基于变换域的信息隐藏算法。
基于空域信息隐藏算法中的典型算法是LSB算法,该算法的主要特点是在载体图像中嵌入的隐藏信息数据量大,但是嵌入位置固定,安全性差,嵌入的隐藏信息易被破坏,鲁棒性不高;基于变换域信息隐藏算法中的典型算法是离散余弦变换域的信息隐藏算法,该算法嵌入信息能够抵御多种攻击,具有较好的鲁棒性,并且嵌入方式多种多样,增加了攻击者提取的难度,具有一定的安全性,但是该类算法嵌入的隐藏信息数据量较小,不适合于进行大数据量的隐蔽通信。
下面对LSB算法原理及LSB算法实现进行了介绍,最后使用MATLAB 对其隐藏过程进行了仿真。
[关键词]信息安全隐藏嵌入信息I目录一、设计要求 (3)二、设计的目的 (3)三、设计的具体实现 (3)3.1 信息隐藏及时空域信息隐藏概述 (3)3.2 LSB上的信息隐秘 (4)3.2.1 LSB上信息隐秘的原理 (4)3.2.2 LSB上的信息隐秘的过程 (5)3.3运用LSB实现秘密消息的隐藏 (6)3.4运用LSB实现秘密消息的差异对比 (9)3.5运用LSB实现秘密消息的提取 (12)3.6信息隐藏的拓展 (15)四、心得体会 (16)五、参考文献 (16)一、设计要求1.复习《信息安全技术导论》中有关LSB的相关知识。
2.对其算法进行详细研究与理论分析。
3.利用MATLAB编写程序并仿真结果。
4.设计报告中应包括具体设计原理、设计的详细说明书以及最终结果。
二、设计的目的1.了解并掌握LSB信息隐藏和提取的方法,具备初步的独立分析和设计能力;2.提高综合应用所学的理论知识和方法独立分析和解决问题的能力;3.训练用MATLAB软件编写程序并仿真。
本科毕业设计-基于lsb的信息隐藏技术的实现
引言信息隐藏将在未来网络中保护信息不受破坏方面起到重要作用,信息隐藏是把机密信息隐藏在大量信息中不让对手发觉的一种方法。
信息隐藏的方法有很多种,基于图象的信息隐藏检测技术是隐写分析技术的基础,对于保障网络信息安全和提高信息隐藏算法的安全性具有重要意义。
最低有效位算法LSB(Least significant bit)是一种简单而通用的信息隐藏方法,大部分的多媒体文件(如图像、音频和视频文件等)都可作为LSB算法中的载体。
本文讨论以图像为载体的LSB隐藏算法。
第一章绪论1.1 信息隐藏技术的来源随着互联网的迅速发展,网上提供服务越来越丰富,人们如今可以通过因特网发布自己的作品、重要信息和进行网络贸易等,但是随之而出现的问题也十分严重:如作品侵权更加容易,篡改也更加方便。
计算机和通信网技术的发展与普及,数字音像制品以及其他电子出版物的传播和交易变得越来越便捷,但随之而来的侵权盗版活动也呈日益猖獗之势。
因此如何既充分利用因特网的便利,又能有效地保护知识产权,已受到人们的高度重视。
信息隐藏技术作为网络安全技术的一个重要新兴课题,内容涉及数据隐藏、保密通信、密码学等相关学科领域,作为隐蔽通信和知识产权保护等的主要手段,正得到广泛的研究与应用。
为了打击犯罪,一方面要通过立法来加强对知识产权的保护,另一方面必须要有先进的技术手段来保障法律的实施。
信息隐藏技术以其特有的优势,引起了人们的好奇和关注。
人们首先想到的就是在数字产品中藏入版权信息和产品序列号,某件数字产品中的版权信息表示版权的所有者,它可以作为侵权诉讼中的证据,而为每件产品编配的唯一产品序列号可以用来识别购买者,从而为追查盗版者提供线索。
此外,保密通信、电子商务以及国家安全等方面的应用需求也推动了信息隐藏研究工作的开展。
中国自古就有这样的谚语,叫做“耳听是虚,眼见为实”,“百闻不如一见”,英语中也有“Seeing is believing”的说法。
这些都表明人们往往过分相信自己的眼睛,而这正是信息隐藏技术得以存在和发展的重要基础,在这一研究领域,大量事实告诉人们:眼见不一定为实!1.2信息隐藏技术的发展1.2.1历史上的隐写术现代信息隐藏技术是由古老的隐写术(Steganography)发展而来的,隐写术一词来源于希腊语,其对应的英文意思是“Covered writing”。
基于LSB图像隐藏和解密算法深度讲解
基于LSB图像隐藏和解密算法深度讲解 本⼈错误之处,欢迎指正。
LSB(LeastSignificant Bits)加密算法:将秘密信息嵌⼊到载体图像像素值的最低有效位,也称最不显著位,改变这⼀位置对载体图像的品质影响最⼩。
普及⼀下常识:RGB图像,蓝⾊,红⾊,绿⾊混合⽽成的彩⾊图像,读取后由三个⼋位m*n的矩阵组成,m*n代表图像的⼤⼩,也就是像素的多少,⼋位指的是⼀个像素占了⼋位⼆进制的⼤⼩,转为⼗进制也就是0-255。
最低有效位是低四位,本系统使⽤低四位进⾏储存数据。
本次仿真实验通过MATALB进⾏仿真,并且只分析灰⾊图像,原因是因为彩⾊图像是三个灰度图像代表了三种颜⾊混合⽽成。
编写两个界⾯,如下图所⽰: 本次讲解给出的代码加密算法代码和解密算法代码,涉及到的界⾯算法不与给出和解释。
算法思想:1,读⼊⼀个m*n的灰度图像,把每⼀位的像素的低四位⽤或运算清0,得到我称之为的“载体图像”。
2,读⼊信息图像,也就是需要隐藏的图像(也可以是其他的信息),将图像的⼋位拆开成⾼四位和低四位。
3,在载体前6个的低四位数据中,放⼊信息图像的⼤⼩信息。
3,按照先⾼后低的顺序,存⼊载体图像,先从左到右,再换下⼀⾏。
4,解密⽆⾮就是上⾯步骤的逆序⽽已。
看完思想后,⼀般情况下就可以⾃⼰尝试写程序了,其实⽤C语⾔对位操作更加⽅便,但是,考虑到需要显⽰图⽚,所以决定使⽤MATLAB进⾏仿真。
此处只提供加密和解密的算法,供需要的⼈学习,界⾯只是单纯的调⽤,所以在这没必要介绍。
%%%%%%%%%加密算法%%%%%%%%%%%clc;close all;clear;Inimage=imread('2222.jpg');Inimage=rgb2gray(Inimage);%真彩转灰度imwrite(Inimage,'car.jpg');figure(1);subplot(221),imshow(Inimage);title('原图');carrierl=bitand(Inimage,240);%清空低四位subplot(222),imshow(carrierl),title('清空低四位');%读取信息%text=158;text=imread('mess3.jpg');text=rgb2gray(text);imwrite(text,'messss.jpg');subplot(223),imshow(text),title('信息图');textu8=uint8(text);%读取输⼊图⽚的⼤⼩[m,n]=size(Inimage);m=double(m);n=double(n);%清空低四位数据after=carrierl;%读取信息⼤⼩[m1,n1]=size(textu8);%计数器count=1;count=double(count);%前六位⽤来放信息⼤⼩的信息m1,n1bit4=m1;%提出⾼⾼四位hhtext=bitand(bit4,3840);%右移⼋位位hhtext=bitshift(hhtext,-8);%提出⾼四位hightext4=bitand(bit4,240);%右移四位hightext4=bitshift(hightext4,-4);%提出低四位lowtext=bitand(bit4,15);%计算第⼏⾏locationy=ceil(count/n);%计算第⼏列locationx=count-(locationy-1)*n;%放⼊⾼四位after(locationy,locationx)=bitor(carrierl(locationy,locationx),hhtext); count=count+1;%计算第⼏⾏locationy=ceil(count/n);%计算第⼏列locationx=count-(locationy-1)*n;%放⼊⾼四位after(locationy,locationx)=bitor(carrierl(locationy,locationx),hightext4); count=count+1;locationy=ceil(count/n);locationx=count-(locationy-1)*n;%放⼊低四位after(locationy,locationx)=bitor(carrierl(locationy,locationx),lowtext); %计数count=count+1;bit4=n1;%提出⾼⾼四位hhtext=bitand(bit4,3840);%右移⼋位位hhtext=bitshift(hhtext,-8);%提出⾼四位hightext4=bitand(bit4,240);%右移四位hightext4=bitshift(hightext4,-4);%提出低四位lowtext=bitand(bit4,15);%计算第⼏⾏locationy=ceil(count/n);%计算第⼏列locationx=count-(locationy-1)*n;%放⼊⾼四位after(locationy,locationx)=bitor(carrierl(locationy,locationx),hhtext); count=count+1;%计算第⼏⾏locationy=ceil(count/n);%计算第⼏列locationx=count-(locationy-1)*n;%放⼊⾼四位after(locationy,locationx)=bitor(carrierl(locationy,locationx),hightext4); count=count+1;locationy=ceil(count/n);locationx=count-(locationy-1)*n;%放⼊低四位after(locationy,locationx)=bitor(carrierl(locationy,locationx),lowtext); %计数count=count+1;%开始载⼊数据for i=1:m1for j=1:n1bit4=textu8(i,j);%提出⾼四位hightext4=bitand(bit4,240);%右移四位hightext4=bitshift(hightext4,-4);%提出低四位lowtext=bitand(bit4,15);%计算第⼏⾏locationy=ceil(count/n);%计算第⼏列locationx=count-(locationy-1)*n;%放⼊⾼四位after(locationy,locationx)=bitor(carrierl(locationy,locationx),hightext4); %计数count=count+1;locationy=ceil(count/n);locationx=count-(locationy-1)*n;%放⼊低四位after(locationy,locationx)=bitor(carrierl(locationy,locationx),lowtext); %计数count=count+1;endendsubplot(224),imshow(after),title('载⼊信息后');%保存图⽚,为tif格式⽆损耗imwrite(after,'after.tif');capity=num2str(m*n+4);messc=num2str(m1*n1);xlabel(['总像素容量为:',capity,';载体信息⼤⼩为',messc],'Color','b'); %%%%%%%%解密算法%%%%%%%%%%%%%clc;clear;close all;Inimage2=imread('after.tif');figure(1);subplot(221),imshow(Inimage2);title('原图'); %%%%%%读取图⽚的⼤⼩信息%%%%%%%提取⾼⾼四位m1hh=bitand(Inimage2(1,1),15);%提取⾼四位m1high=bitand(Inimage2(1,2),15);%提取低四位m1low=bitand(Inimage2(1,3),15);%⾼四位左移m1high=bitshift(m1high,4);%⾼⾼四位左移⼋位m1hh=double(m1hh);m1hh2=bitshift(m1hh,8);%合成数据m1=double(m1high+m1low)+m1hh2;%提取⾼⾼四位n1hh=bitand(Inimage2(1,4),15);%提取⾼四位n1high=bitand(Inimage2(1,5),15);%提取低四位n1low=bitand(Inimage2(1,6),15);%⾼四位左移n1high=bitshift(n1high,4);%⾼⾼四位左移⼋位n1hh=double(n1hh);n1hh=bitshift(n1hh,8);%合成数据n1=double(n1high+n1low)+n1hh;m1=double(m1);n1=double(n1);%%%%%%%开始读出数据,⽣成图⽚%%%%% %⽣成2个空⽩矩阵messagehigh=zeros(m1,n1);messagelow=zeros(m1,n1);result=zeros(m1,n1);%载体⼤⼩[m,n]=size(Inimage2);%初始化数值count=1;oddc=0;evenc=0;for i=1:mfor j=1:n%信息读取结束⾃动跳出if count==m1*n1*2+4break;%前四位已经读取elseif(count>6)dataout=bitand(Inimage2(i,j),15);locount=count-6;if rem(locount,2)==0evenc=evenc+1;%计算第⼏⾏locationy=ceil(evenc/n1);%计算第⼏列locationx=evenc-(locationy-1)*n1; messagelow(locationy,locationx)=dataout;elseoddc=oddc+1;%计算第⼏⾏locationy=ceil(oddc/n1);%计算第⼏列locationx=oddc-(locationy-1)*n1; messagehigh(locationy,locationx)=dataout;endendcount=count+1;endendfor i=1:m1for j=1:n1messagehigh(i,j)=bitshift(messagehigh(i,j),4); result(i,j)=bitor( messagehigh(i,j),messagelow(i,j)); endendcompare=imread('mess2.jpg');compare=rgb2gray(compare);result=uint8(result);subplot(222),imshow(result);title('结果');subplot(223),imshow(compare);title('信息'); compare=imread('mess.jpg');compare=rgb2gray(compare);。
基于LSB的信息隐藏技术
基于LSB的信息隐藏技术的实现20123332 唐晓晖摘要:提供一种LSB的算法,该方法可以在图片载体上隐藏文本信息,隐藏性较好,人眼几乎无法区别。
关键词:Matlab LSB 信息隐藏图像一.信息隐藏技术1.历史上的信息隐藏技术古代的信息隐藏技术最初即是隐写术,隐写术一次最早起源于希腊语,英文是“Covered Writing”,古希腊历史学家希罗多德在著作中写了这么一个故事:一个名叫Histaieus的人筹划着与他的朋友合伙谋反,企图推翻波斯人的统治,他找来一位奴隶,剃光其头发把文字写在他的头上,等到头发再长出来,把这人作为传递消息的工具,里应外合,叛乱成功。
无独有偶,历史上例如隐写术的事例还有很多,真正符合“隐写术”这三个字的是17世纪英国的Wilkins创造的,随着之后工业的发展,在第一次世界大战中人们制造出了化合物做成隐写墨水和显影剂,在中国古代,人们曾经使用挖有若干小孔的纸膜板盖在信件上,从中从信件明文中找到重要的密文消息。
2.现代的信息隐藏技术随着网络在日常生活中的普及度的提高,网络信息的安全也成为了许多人关注的焦点,如今网络上出现的问题也越来越多,例如版权问题等,在国外对于版权的关注度是非常高的,虽然如今国内已经开始注重网络上的版权问题,但还是有许多人并不重视自己的版权或者尊重他人的版权。
而信息隐藏技术也随着这一问题也进入了更多人的视线,其中数字水印技术作为信心隐藏技术的一种已经运用到了中国电影中,通过将数字水印嵌入到电影中来做到保护版权防止盗版的作用,这种数字水印并不会影响人们的观影体验,也很好的保护了版权。
二.基于LSB的信息隐藏技术1.LSB信息隐藏方法LSB的英文全称是least significant bit,也就是最低比特位的信息隐藏方法,它是一种较早出线的时域信息隐藏技术,实现也比较简单,用秘密消息替换掉载体中最不重要的比特位。
这种算法的缺点是抗干扰性,即鲁棒性比较差,在有损压缩以及载体格式转换中的密文消息容易受到缺损,优点是根据载体的容量大小可以隐藏大量的密文消息,并且对于原始数据的保护比较好,隐蔽性强,人的感官几乎不能分辨原始载体和带有密文的载体的区别。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要随着科技的发展,信息安全技术已经成为不可忽略的因素。
而网络的普及及应用,让多媒体技术得到了广泛的发展,因此图像及视频的安全变得越来越重要。
本文正是在这种时代背景下,介绍一种关于图像处理的信息隐藏技术。
用于进行隐蔽通信的图像信息隐藏算法可以分为两大类:基于空域的信息隐藏算法和基于变换域的信息隐藏算法。
基于空域信息隐藏算法中的典型算法是LSB算法,该算法的主要特点是在载体图像中嵌入的隐藏信息数据量大,但是嵌入位置固定,安全性差,嵌入的隐藏信息易被破坏,鲁棒性不高;基于变换域信息隐藏算法中的典型算法是离散余弦变换域的信息隐藏算法,该算法嵌入信息能够抵御多种攻击,具有较好的鲁棒性,并且嵌入方式多种多样,增加了攻击者提取的难度,具有一定的安全性,但是该类算法嵌入的隐藏信息数据量较小,不适合于进行大数据量的隐蔽通信。
下面对LSB算法原理及LSB算法实现进行了介绍,最后使用MATLAB 对其隐藏过程进行了仿真。
[关键词]信息安全隐藏嵌入信息I目录一、设计要求 (3)二、设计的目的 (3)三、设计的具体实现 (3)3.1 信息隐藏及时空域信息隐藏概述 (3)3.2 LSB上的信息隐秘 (4)3.2.1 LSB上信息隐秘的原理 (4)3.2.2 LSB上的信息隐秘的过程 (5)3.3运用LSB实现秘密消息的隐藏 (6)3.4运用LSB实现秘密消息的差异对比 (9)3.5运用LSB实现秘密消息的提取 (12)3.6信息隐藏的拓展 (15)四、心得体会 (16)五、参考文献 (16)一、设计要求1.复习《信息安全技术导论》中有关LSB的相关知识。
2.对其算法进行详细研究与理论分析。
3.利用MATLAB编写程序并仿真结果。
4.设计报告中应包括具体设计原理、设计的详细说明书以及最终结果。
二、设计的目的1.了解并掌握LSB信息隐藏和提取的方法,具备初步的独立分析和设计能力;2.提高综合应用所学的理论知识和方法独立分析和解决问题的能力;3.训练用MATLAB软件编写程序并仿真。
三、设计的具体实现3.1 信息隐藏及时空域信息隐藏概述信息隐藏技术主要由下述两部分组成:(1)信息嵌入算法,它利用密钥来实现秘密信息的隐藏。
(2)隐蔽信息检测/提取算法(检测器),它利用密钥从隐蔽载体中检测/恢复出秘密信息。
在密钥未知的前提下,第三者很难从隐秘载体中得到或删除,甚至发现秘密信息。
空域隐藏技术是指将秘密信息嵌入数字图像的空间域中,即对像素灰度值进行修改以隐藏秘密信息。
时空域信息隐藏分为:LSB与MSB,LSB对应的中文意思是:最不重要位,有时也称为最低有效位或简称最低位。
MSB,是最重要位。
这里主要介绍最不重要位LSB。
3.2 LSB上的信息隐秘3.2.1 LSB上信息隐秘的原理LSB方法通过调整载体图像像素值的最低若干有效位来来实现数据的嵌入,使所隐藏信息在视觉上很难被发觉,而且只有知道秘密信息嵌入的位置才能正确提取出秘密信息。
显然,LSB隐藏算法最低位被改变的概率是50%,它在原始图像里面引入了极小的噪声,在视觉上是不可见的。
实际上,对于24bit真彩色图像,我们在其最低两位甚至三位来隐藏信息使视觉上仍然是不可见的,对于灰度图像,改变其最低两位也能取得较好的效果。
另外,在LSB方法中,也可以不采用直接嵌入的方法,根据异或的可逆准则,采用替换的准则来实现信息的隐藏。
在嵌入数据位时,嵌入的是数据位与1或者0的异或值。
基于异或的运算也有许多改进的算法,在嵌入的过程中,首先计算每个像素灰度值的每一位的异或值,并把所得到的结果与要嵌入的信息进行异或运算,然后,把像素灰度值的最低位全部清零或置为1,再根据异或运算结果的值来改变最低位的信息,实际上,这相当于对信息进行了一层加密处理,嵌入的不再是原始信息,而是原始信启、的另外一种表达形式,不知道密钥的攻击者很难从中提取出信息。
LSB算法具有非常弱的鲁棒性。
对于许多变换,即使是有益的,也都是很脆弱的。
有损压缩典型的有损压缩如JPEG,就很有可能彻底破坏隐藏的信息。
因为LSB算法试图利用人类视觉系统的漏洞,而有损压缩算法所依赖的,是对附加噪声的不敏感性,正是利用它来减少数据量的。
几何变换 移动像素尤其是改变像素在原栅格中的位置都有可能破坏嵌入的消息。
任何其它的图像变换如模糊、滤波等,通常都会破坏隐藏的数据。
3.2.2 LSB 上的信息隐秘的过程最低有效位(Least Significant Bits ,LSB )方法是最早提出来的最基本的空域图像信息隐藏算法,许多其它的空域算法都是从它的基本原理进行改进扩展的,使得LSB 方法成为使用最为广泛的隐藏技术之一。
现在有一些简单的信息隐藏软件大多是运用LSB 和调色板调整等相关技术将信息隐藏在24bit 图像或256色图像中,如ide and Seek ,StegoDos ,White Noise Storm ,S-tools 等经典信息隐藏软件。
隐秘算法核心是将我们选取的像素点德尔最不重要位依次替换成秘密信息,以达到信息秘密的目的。
嵌入过程包括选择一个图像载体像素点的子集{j 1,…,j m l )(},然后在子集上执行替换操作像素m c i ji ↔,即把c ji 的LSB 与秘密信息m i 进行交换(m i 可以是1或0)。
一个替换系统也可以修改载体图像像素点的多个比特,例如,在一个载体元素的两个最低比特位隐藏两比特、三比特,可以使得信息嵌入量大大增加但同时将破坏载体图像的质量。
在提取过程中找出被选择载体 描述图像的像素序列,将LSB (最不重要位)排列起来重构秘密信息,算法描述如下:嵌入过程:for (i=1;i<=像素序列个数;i++)c si i ↔for (i=1;i<=秘密消息长度;i++)i j j m c s i i −→←−−←提取过程:for (i=1;i<=秘密消息长度;i++){j i i↔ )(c LSB m ji i ←}接下来我们具体应用这三个算法来实现秘密消息的隐藏与提取及对比。
3.3运用LSB 实现秘密消息的隐藏程序流程图如下:3-1 信息隐藏流程图主要算法嵌入隐藏信息的算法实现文件名:lsbhide.m参数说明:c:\wanghan.bmp是信息隐藏载体图像。
C:\1.txt是秘密消息文件。
c:\wanghan1.bmp是信息隐秘后生成图像。
ste_cover是信息隐秘后图像矩阵。
len_total是秘密消息长度,即容量。
嵌入算法如下:3-2 信息隐藏程序代码嵌入隐藏信息算法运行结果:原始图像隐藏信息后的图像3-3 运行程序后的结果得到的结果如图3-3所示,很明显,通过肉眼是看不出两幅图有什么差别的,也就是说隐秘算法的不可见性还是比较好的。
3.4运用LSB实现秘密消息的差异对比程序流程图如下:3-4 对比的流程图主要算法文件名:compare.m函数功能:完成显示隐秘前后两幅图像的区别。
算法如下:3-5 对比程序实现隐秘前后两幅图像区别的运行结果如图3-5所示:3-6 运行对比程序后的差异图像3.5运用LSB实现秘密消息的提取程序流程图如下:3-7 提取秘密信息流程图主要算法文件名:lsbget.m函数功能:完成提取隐秘于LSB上的秘密信息参数说明:c:\wanghan1.bmp是信息隐秘后图像。
100是秘密消息的长度。
c:\1.txt是提取出的秘密消息文件。
result是提取的消息。
提取算法如下:3-8 差异的程序结果分析:原始图像矩阵W为:3-9 原始图像矩阵W 隐藏后信息图像矩阵E为:3-10 隐藏后矩阵E原始信息和隐藏后信息矩阵差值F下图所示:3-11 差异矩阵F由图形对比可知,在相应的比特位嵌入秘密信息来实现信息隐藏。
但最低位的隐藏很容易被识别和攻破,因此下面介绍信息隐藏的拓展。
3.6信息隐藏的拓展由前面信息隐藏的介绍,我们知道最低位的隐藏不会影响图像的识别,因此我们可以在相应的位数进行信息填充。
比如最后两位,这样的话嵌入信息较多,相应的图像失真度较大。
并且也容易被攻破,但随机序列相对来说就比较安全。
一个品质良好的随机序列可以在信息安全诸多领域发挥不可估量的作用。
在信息隐藏中,最直接的一个例子就是通过随机序列控制秘密信息的嵌入规则。
一个没有随机序列控制的隐藏算法是没有安全性可言的。
随机选取像素点,将消息隐秘与LSB,如果顺序选取像素点进行信息隐秘,势必会造成图像各部分统计特征的不一致,而导致严重的安全问题。
载体的第一部分和第二部分,也就是修改的部分和没有修改的部分,具有不同的统计特性,增大了攻击者对秘密通信怀疑的可能性。
为了解决这个问题,可以随机间隔选取像素序列。
此嵌入与提取算法与顺序隐秘的算法基本相同,只是在选取图像序列时不再顺序而是随机间隔的选取。
四、心得体会本文从图像信息隐藏算法方面对图像信息隐藏技术进行了讨论,并且详细地探讨了基于LSB时空域的图像信息隐藏技术,给出了相应的MATLAB程序,对实验结果进行了分析讨论。
在使用Matlab的过程中,尽管从没学过,但依然通过它解决了一些编程的问题,也明白了MATLAB的使用及算法的含义。
五、参考文献1.王丽娜,郭迟,李鹏主编.信息隐藏技术实验教程.武汉大学出版社,2004;2.刘振华,尹萍主编.信息隐藏技术及应用[M].北京,科学出版社,2002;3.何超英主编.MATLAB应用与实验教程.北京,电子工业出版社,2010;4.陈克非,黄征主编.信息安全技术导论.北京,电子工业出版社,2010;。