利用LSB算法进行信息隐藏的C语言实现
- 格式:pdf
- 大小:163.41 KB
- 文档页数:3
LSB算法的信息隐藏实验单位:三系一队姓名:马波学号:3222008030LSB信息隐藏实验一、实验目的1.掌握LSB算法原理2.熟悉信息隐藏与提取的流程3.锻炼算法的程序实现能力二、实验原理1.信息隐藏用秘密信息比特替换载体中的最不重要部分,可以达到对信息隐藏的目的。
在数字图像中,每个字节的最低位对图像信息的影响最小,因此将数字图像的最低位用信息比特替换可以实现信息隐藏。
由于载体图像的每个字节只隐藏一个秘密信息比特,所以只有当载体图像的大小是秘密信息大小的8倍以上时才能完整的将秘密信息隐藏。
提取信息位并隐藏的示意图:2.信息提取在隐藏了秘密信息的数字图像中,每个字节的最低位就是秘密信息比特位,只需将这些信息比特提取出来并组合,就可以恢复出原来的秘密信息。
提取信息示意图:三、实验内容A.将秘密信息隐藏在载体的最低位,检验算法的鲁棒性(1)读入秘密信息(此实验中秘密信息为二值图像)(2)把秘密信息的比特位放入载体的最低位(3)给隐藏了秘密信息的图像加入大小为1的噪声加入噪声大小为1时:加入噪声为2时:B.将秘密信息隐藏在载体的最高位,检验算法的鲁棒性(1)读入秘密信息(此实验中秘密信息为二值图像)(2)把秘密信息的比特位隐藏在载体的最高位(3)分别给隐藏了秘密信息的图像加入大小为1和2的噪声C.将秘密信息隐藏在载体的第三位,检验算法的鲁棒性(1)同A中的(1)(2)把秘密信息比特位隐藏在载体的第三位(3)分别给隐藏了秘密信息的图片加入大小为1、2和3的噪声五、实验总结1.当秘密信息隐藏在最低位时,对载体的改变小,载体质量较高。
但鲁棒性较差,有噪声干扰时很容易发生信息丢失从而无法恢复出秘密信息2.当秘密信息隐藏在最高位时,图像的鲁棒性增强,受到较大噪声干扰时仍能恢复出秘密信息,但对图像的改变较大,隐藏的位数越高图像的质量越低。
3.当隐藏的信息位介于最低位和最高位时,选择合适的位置,既可以提高信息隐藏的鲁棒性,又对图像的质量影响不大,所以,进行信息隐藏时可以考虑LSB的改进。
信息隐藏课设LSB算法实验步骤隐藏提取及测试(1)隐藏算法,保存在hide_lsb.m文件中。
function o = hide_lsb(block, data, I)%function o = hide_lsb(block, data, I)%block:the minimal ceil to hide%data:the information%I:source imagesi = size(I);lend = length(data);%将图像划分为M*N个小块N = floor(si(2) / block(2));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);end;end;(2)提取算法,保存在dh_lsb.m文件中。
function out = dh_lsb(block, I)%function out = dh_lsb(block, I)%block:the minimal ceil to dehide%I:stegoed imagesi = size(I);%将图像划分为M*N个小块N = floor(si(2) / block(2));M = floor(si(1) / block(1));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;end;end;end;(3)测试脚本,保存在test.m文件中。
空域信息隐藏算法(完成基于LSB的图像信息隐藏)最近在上信息隐藏,做⼀个记录⼀,实验要求(1)了解信息隐藏算法的分类⽅式和分类依据(2)理解空域信息隐藏算法的基本思想(3)掌握最低有效位算法原理(4)完成基于LSB的图像信息隐藏⼆、实验内容载体图像为24位真彩⾊bmp图像Lena.bmp,嵌⼊的秘密图像为⿊⽩的bmp图像LSB.bmp,要求采⽤空域信息隐藏算法,将LSB.bmp嵌⼊到Lena.bmp的最低有效位中,同屏显⽰原载体图像、需要嵌⼊的秘密图像、嵌⼊了秘密图像的伪装载体、提取的秘密图像。
以下为实验材料:lena.bmp 和 LSB.bmp隐体:三、实验步骤和设计思想1,使⽤pyhton库,skimage来完成相关的⼟图像处理2,通过skimage库打开隐体,发现只有两个值【255,和 0】所以,其实隐藏时,只要⽤⼀位就可以隐藏隐体,将255使⽤1代替,0不变,将其藏在载体的最后⼀位即可。
3,因为隐体为RGB三通道图像,为了隐藏的更好,使⽤随机数将0和1,随机选定⼀个图层进⾏隐藏,当然为了能够还原原图像,使⽤⼀个seed作为key,这样产⽣的随机数就可以顺序提取。
4,隐藏和提取时,使⽤位运算可轻松的实现数字的⾼低位的存取。
5,将变换后的图⽚进⾏保存,再使⽤相同的key和隐藏信息后的载体,进⾏提取。
6,为了⽅便使⽤,将隐藏的⽅法和过程使⽤,⾯向对象的思想,封装为类。
四,### 代码from skimage import ioimport numpyclass IMG_LSB:def __init__(self, key):self.key = keydef show(self, img):"""显⽰图⽚:param img: 显⽰的图⽚矩阵:return: none"""io.imshow(img)io.show()def create_cover(self, img_cover_name, img_info_name, save_img_name):"""使⽤LSB算法对图像进⾏隐藏,隐藏到使⽤key作为种⼦⽣成的随机数指定的RGB通道中:param img_cover_name: 载体图⽚名:param img_info_name: 隐体图⽚名:param save_img_name: LSB⽣成后的图⽚保存位置以及名字:return: LSB⽣成后的图⽚矩阵"""img_info = io.imread(img_info_name)img_cover = io.imread(img_cover_name)self.show(img_info)self.show(img_cover)self.ls_info = img_info.shape[0] # 得到隐体图⽚的长和宽self.ls_cover = img_cover.shape[0] # 得到载体的长和宽if self.ls_info > self.ls_cover:print("载体太⼩")# 开始隐藏numpy.random.seed(self.key)for i in range(0, self.ls_info):for j in range(0, self.ls_info):if img_info[i][j] == 255 : # 如果隐体为255则藏在R层最低为置为1img_cover[i, j, numpy.random.randint(0, 3)] |= 1 # 随机选定⼀个通道进⾏隐藏else:img_cover[i, j, numpy.random.randint(0, 3)] &= 254 # 如果隐体为0则藏在R层最低为置为0self.show(img_cover)io.imsave(save_img_name, img_cover)return img_coverdef extract_img(self, blmb_name, save_img_name):"""对隐体进⾏提取并显⽰:param blmb_name: LSB⽣成的含有隐体的载体名:param save_img_name: 提取后的隐体存储的位置:return: 提取后的隐体的矩阵"""blmb = io.imread(blmb_name)matrix = [[255 for i in range(self.ls_info)] for i in range(self.ls_info)] # ⽣成与隐体相同⼤⼩的矩阵,并赋值为255re_info_img = numpy.array(matrix, dtype=numpy.uint8) # 将⽣成的矩阵转化为可存储图像的8位格式self.show(re_info_img)# 开始提取numpy.random.seed(self.key)for i in range(0, self.ls_info):for j in range(0, self.ls_info):randint_value = numpy.random.randint(0, 3) # 使⽤seed控制随机数的⽣成保证与之前隐藏时,⽣成的随机数⼀致 blmb[i, j, randint_value] &= 1 # 取出最后⼀位if blmb[i, j, randint_value] == 0:re_info_img[i][j] &= 0 # 如果最后⼀位为0则隐体原处为0,为1则为255else:re_info_img[i][j] |= 255io.imsave("img/re_img.bmp", re_info_img)self.show(re_info_img)return re_info_img# 测试if __name__ == '__main__':img = IMG_LSB(123) # key为123img.create_cover("img/Lena.bmp", "img/LSB.bmp", "img/blmb2.bmp")img.extract_img("img/blmb2.bmp", "img/re_img.bmp")。
学号:姓名:专业年级班级:实验室:组别:实验日期:课程名称保密技术实验实验课时实验项目名称和序号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图像之加密信息隐藏应用实现摘要随着Internet的发展,人们越来越频繁的传递信息,在给人们带来便利的同时,也给人们的安全和隐私带来了隐患。
从很久以前,人们就开始了解如何保护自己的信息,发展到现在,信息安全主要分为两方面,密码学和信息隐藏。
本文在密码学这块的研究主要是RSA算法、AES算法和3DES算法。
RSA 是在1977年被提出来的,属于非对称加密算法,广泛用于公钥加密和电子商务中。
而对于信息隐藏技术方面,本文主要研究LSB算法。
LSB(LeastSignificant Bits)算法:一种常见的空间域数据隐藏算法,它替换了最低有效位以隐藏秘密信息。
通过LSB算法隐藏的信息一般来说肉眼察觉不出来,能很好地的保护秘密信息。
RSA算法可以将信息加密成密文,而LSB算法可以将加密后的密文隐藏到图片之中,人们的肉眼根本分辨不出来,将两者结合起来,可以更有效的保护信息安全。
关键词:加密,信息隐藏,LSB算法,RSA算法Implementation of encrypted information hiding based on LSB imageAbstractWith the development of the Internet, people are passing information more and more frequently, which brings convenience to people, but also brings hidden dangers to people's security and privacy. From a long time ago, people began to understand how to protect their own information. From now on, information security is mainly divided into two aspects, cryptography and information hiding. The research on cryptography in this article is mainly about RSA algorithm, AES algorithm and 3DES algorithm.RSA was introduced in 1977 and belongs to asymmetric encryption algorithm, which is widely used in public key encryption and e-commerce.As for the information hiding technology, this paper mainly studies the LSB algorithm. LSB (LeastSignificant Bits) algorithm: a common spatial data hiding algorithm, which replaces the least significant bit to hide secret information. The information hidden by the LSB algorithm is generally invisible to the naked eye, and can well protect secret information. The RSA algorithm can encrypt information into ciphertext, and the LSB algorithm can hide the encrypted ciphertext in the picture, people can't distinguish it by the naked eye. Combining the two can effectively protect information security.Keywords: encryption, information hiding, LSB algorithm, RSA algorithm目录一、前言 (2)(一)本设计的目的、意义及应达到的技术要求 (3)(二)本设计在国内外的发展概况及存在的问题 (3)(三)主要研究目标和内容 (4)(四)本设计应解决的主要问题 (4)二、系统需求分析 (5)(一)用户需求分析 (5)(二)功能需求分析 (5)(三)性能需求分析 (5)(四)可靠性需求分析 (5)(五)安全性需求分析 (6)三、可行性分析 (6)(一)技术可行性分析 (6)(二)经济可行性分析 (6)(三)操作可行性分析 (6)(四)性能可行性分析 (7)(五)安全可行性分析 (7)四、相关技术 (7)(一)信息隐藏概述 (7)(二)信息隐藏模型 (8)1.嵌入对象 (8)2.掩体对象 (8)3.隐藏对象 (9)4.密钥 (9)(三)信息隐藏的分类 (9)(四)信息隐藏的特点 (9)1.透明性 (10)2.不可检测性 (10)3.鲁棒性 (10)4.自恢复性 (10)5.安全性 (10)6.对称性 (10)7.可纠错性 (10)(五)信息隐藏技术与密码学技术 (10)(六)LSB算法 (12)(七)RSA算法 (12)1.算法描述 (12)2.RSA的安全性 (14)3.RSA的优缺点 (15)(八)AES算法 (15)1.AES简述 (15)2.AES的总体结构 (15)3.AES的详细结构 (17)(九)3DES算法 (19)1.3DES算法简述 (19)2.3DES算法的安全性 (22)五、系统设计 (22)(一)研究的基本思路和方法 (22)(二)总体设计 (22)(三)加密隐藏功能模块 (23)(四)提取解密功能模块 (24)六、系统测试 (25)(一)RSA加密和解密测试 (27)(二)AES加密测试 (29)(三)AES解密测试: (31)(四)3DES加密测试: (31)(五)3DES解密测试 (33)(六)LSB算法隐藏测试 (34)七、总结 (40)参考文献 (41)致谢 ..................................................................................................... 错误!未定义书签。
本科生课程考试答题本考生姓名__________考生学号_______专业班级________指导老师__________考试科目_________考试日期__年__月__日目录一、实验任务和要求 (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)是运用人类视觉系统无法觉察细微变化之掩蔽效果,将秘密信息隐藏在图像像素的最低位,具有计算速度快且容易秘密信息隐藏在图像像素的最低位,具有计算速度快且容易实现有点。
基于图像分割和随机LSB的信息隐藏算法高华玲【摘要】利用灰度图像分割和随机最低有效位(rand LSB)算法相结合提出一种新的信息隐藏算法.算法可将不同类型的载体图像转换为一个虚拟的24位灰度图像,然后分割为若干图像块,再检测每个图像块的区域大小,返回相关信息列表.如果攻击者获取不到完整的密钥,则不能解析被转换的图像.完整的密钥包括图像分割方法的密钥、图像块选择密钥、秘密信息数据分布密钥、秘密信息类型密钥、加密方式密钥以及秘密信息的长度密钥等.这些密钥通过主密钥生成,如果不能获取全部的密钥,隐写分析很难检测出图像中存在的秘密信息.实验结果表明,该方法有很好的不可感知性,载体图像的修改程度小、信息隐藏的容量大并具有抗提取的鲁棒性.【期刊名称】《现代计算机(专业版)》【年(卷),期】2016(000)015【总页数】4页(P3-5,14)【关键词】信息隐藏;随机LSB;图像分割;灰度图像分割【作者】高华玲【作者单位】三亚学院,三亚572022【正文语种】中文关键词:信息隐藏;随机LSB;图像分割;灰度图像分割数字图像的信息隐藏利用载体图像的冗余性,将秘密信息嵌入到普通的图像中,在普通信息发布或传输的同时将秘密信息传送出去。
在这个过程中,需要尽量掩盖秘密信息的存在,避免引起他人的注意。
信息隐藏的常用技术有很多种,例如替换技术LSB(最低有效位)是一种空域的操作将秘密信息替换载体图像中最不重要的部分,保证原始载体图像的失真度保持在视觉允许的范围。
LSB方法是空域信息隐藏最为常见的算法,具有嵌入方式简单,隐藏信息容量大和很好的不可感知性等优点,同时这种方法不能抵抗图像的压缩、尺寸变化等攻击,鲁棒性较差。
而基于数学变换的方法,如离散余弦变换(DCT)、离散傅里叶变换(DFT)、离散小波变换(DWT)等方法将秘密信息嵌入到某合适的频段,有较好的鲁棒性,可抵抗压缩、噪音等的攻击。
另外扩展频谱技术将秘密信息多次嵌入到载体图像中,隐藏的信息不易被过滤掉,尽管传输速率较差但是在传输中受到噪声攻击,隐藏信息也不会丢失。
基于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(Least significant bit)是一种简单而通用的信息隐藏方法,大部分的多媒体文件(如图像、音频和视频文件等)都可作为LSB算法中的载体。
本文讨论以图像为载体的LSB隐藏算法。
第一章绪论1.1 信息隐藏技术的来源随着互联网的迅速发展,网上提供服务越来越丰富,人们如今可以通过因特网发布自己的作品、重要信息和进行网络贸易等,但是随之而出现的问题也十分严重:如作品侵权更加容易,篡改也更加方便。
计算机和通信网技术的发展与普及,数字音像制品以及其他电子出版物的传播和交易变得越来越便捷,但随之而来的侵权盗版活动也呈日益猖獗之势。
因此如何既充分利用因特网的便利,又能有效地保护知识产权,已受到人们的高度重视。
信息隐藏技术作为网络安全技术的一个重要新兴课题,内容涉及数据隐藏、保密通信、密码学等相关学科领域,作为隐蔽通信和知识产权保护等的主要手段,正得到广泛的研究与应用。
为了打击犯罪,一方面要通过立法来加强对知识产权的保护,另一方面必须要有先进的技术手段来保障法律的实施。
信息隐藏技术以其特有的优势,引起了人们的好奇和关注。
人们首先想到的就是在数字产品中藏入版权信息和产品序列号,某件数字产品中的版权信息表示版权的所有者,它可以作为侵权诉讼中的证据,而为每件产品编配的唯一产品序列号可以用来识别购买者,从而为追查盗版者提供线索。
此外,保密通信、电子商务以及国家安全等方面的应用需求也推动了信息隐藏研究工作的开展。
中国自古就有这样的谚语,叫做“耳听是虚,眼见为实”,“百闻不如一见”,英语中也有“Seeing is believing”的说法。
这些都表明人们往往过分相信自己的眼睛,而这正是信息隐藏技术得以存在和发展的重要基础,在这一研究领域,大量事实告诉人们:眼见不一定为实!1.2信息隐藏技术的发展1.2.1历史上的隐写术现代信息隐藏技术是由古老的隐写术(Steganography)发展而来的,隐写术一词来源于希腊语,其对应的英文意思是“Covered writing”。
软件学院实验报告实验名称:信息隐藏实验指导教师:姓名:学号:成绩:一、实验目的掌握时域隐藏算法LSB的基本原理,了解变换域隐藏算法DCT的基本原理。
二、实验内容1.运行LSB算法程序,将自己的保密信息隐藏在给定的原始载体中,保存伪装载体,然后从自己的伪装载体中提取隐藏信息,比较他们的区别。
运行lsbmain程序:图1-信息所要隐藏在的原始载体图像图2-要隐藏的信息图为隐藏了保密信息的伪装载体:图3-伪装后的图像比较:载体和伪装载体看不出什么差别。
图4-提取信息比较:取出后的信息也没有改变。
2.在以LSB为例验证时域替换隐藏技术的时候,除了使用实验给出的模版以外,可以自己替换lsbmain.m程序中的载体图像文件,以及需要隐藏的秘密信息文件。
图5-修改载体图像文件和秘密信息文件图6-修改后的载体图像图7-修改后的保密信息图8-运行后的伪装图像图9-提取到的保密信息3.用保密信息去替换原始载体的最低位平面或其他层位平面,即通过修改程序中函数LSB(c,m,1)中1的值,看看对隐藏的文件有什么影响,分析原因。
图10-将低位平面改到高位平面图11-伪装图像图12-提取出的信息影响:在图像的高位插入信息后,伪装图像发生了较大改变,并且提取出的信息也丢失了很多。
4.给自己的伪装载体加噪声(运行lsb_noise.m),提取出隐藏的信息,和无噪声时的做比较。
图13-噪声程序图14-加了噪声的伪装图像图15-从加噪声的伪装图像提取的信息比较:加了噪声的伪装图像和原来的伪装图像有区别,但不会影响图像大体的形状。
另外,提取的信息基本丢失。
三、LSB程序的流程以及什么是数字隐藏技术?流程:1.将原始载体图像转换到二进制表示;2.用二进制秘密信息中的每一位比特信息替换与之相对应的载体数据的最低有效位;3.将得到的含秘密信息的二进制数据转换为十进制像素值,得到含秘密信息的图像;4.提取时过程相反。
数字隐藏技术:以数字媒体(如数字图像和声音等)作为载体,在不使载体本身发生显著变化的前提下,将需要保密传递的信息隐藏到载体中,从而达到隐藏传递目的的技术。
2018年 / 第5期 物联网技术930 引 言信息隐藏也称作数据隐藏,起源于隐写术,是集多学科理论与技术于一身的新兴技术。
信息隐藏技术主要是指将特定的信息嵌入到数字化宿主信息中,信息隐藏的目的不在于限制正常的信息存取和访问,而在于保证隐藏的信息不被监控者注意和重视,从而减少特定信息泄露的可能性。
随着技术的发展,各种信息安全的泄露事件时有发生,信息安全领域的研究也逐渐引起科研工作者的重视。
1 原 理信息隐藏技术又称为密写术,是将秘密信息嵌入到看上去很普通的信息中传送,防止第三方检测出秘密信息。
信息隐藏技术结合计算机技术、加密技术等,逐渐发展形成水印技术,主要用于版权保护、拷贝控制和操作跟踪等领域[2]。
LSB 算法主要应用于将秘密信息嵌入到载体图像像素值的最低有效位(也称最不显著位),改变这一位置对载体图像的品质影响。
对载体图像空域像素值做LSB 替换,用来替换LSB 的序列就是需要加入的水印信息、水印的数字摘要或由水印生成的伪随机序列[3]。
本文结合水印技术,从传播信道的安全角度出发,提出了一种基于LSB 算法实现信息隐藏的方案。
发送端M 1为发送方原始载体数据的二进制序列,M 2为特定信息数据的二进制序列;发送端特定信息M2经过LSB 算法嵌入到载体数据M 1序列中形成M 3;发送端含水印的M 3序列与载体M 1序列经私钥K 1所包含的M 1与M 3置换信息生成序列D ;合法接收端通过私钥K 1对公开信道序列D 进行逆解调得出特定信息M 2,从而实现特定信息在传播信道中基于LSB 算法的信息隐藏[4]。
通信系统信息隐藏模型如图1所示。
图1 通信系统信息隐藏模型2 实验仿真模型2.1 发送端载体数据M 1本文通信模型中的载体数据M 1通过文本二进制转换软件生成,如图2所示,目前仅支持英文字符与二进制序列之间的转换。
图2 文本文件转换为二进制代码由图2可知,载体对象文本“ai ”对应的二进制码元序列为M 1=01100001 01101001。
Centr 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←cifor(i=1。
i<=秘密消息长度。
i++>//将选取的像素点的最不重要位依次替换成秘密信息sji←cji←→mi提取过程:for(i=1。
i<=秘密消息长度。
i++>{ i←→ji//序选取mi←LSB(cji>}五、实验内容与步骤基本演示环境:matlabLSB,Least Significant Bits,最低有效位,将图像加密处理。
基于LSB的信息隐藏技术的实现20123332 唐晓晖摘要:提供一种LSB的算法,该方法可以在图片载体上隐藏文本信息,隐藏性较好,人眼几乎无法区别。
关键词:Matlab LSB 信息隐藏图像一.信息隐藏技术1.历史上的信息隐藏技术古代的信息隐藏技术最初即是隐写术,隐写术一次最早起源于希腊语,英文是“Covered Writing”,古希腊历史学家希罗多德在著作中写了这么一个故事:一个名叫Histaieus的人筹划着与他的朋友合伙谋反,企图推翻波斯人的统治,他找来一位奴隶,剃光其头发把文字写在他的头上,等到头发再长出来,把这人作为传递消息的工具,里应外合,叛乱成功。
无独有偶,历史上例如隐写术的事例还有很多,真正符合“隐写术”这三个字的是17世纪英国的Wilkins创造的,随着之后工业的发展,在第一次世界大战中人们制造出了化合物做成隐写墨水和显影剂,在中国古代,人们曾经使用挖有若干小孔的纸膜板盖在信件上,从中从信件明文中找到重要的密文消息。
2.现代的信息隐藏技术随着网络在日常生活中的普及度的提高,网络信息的安全也成为了许多人关注的焦点,如今网络上出现的问题也越来越多,例如版权问题等,在国外对于版权的关注度是非常高的,虽然如今国内已经开始注重网络上的版权问题,但还是有许多人并不重视自己的版权或者尊重他人的版权。
而信息隐藏技术也随着这一问题也进入了更多人的视线,其中数字水印技术作为信心隐藏技术的一种已经运用到了中国电影中,通过将数字水印嵌入到电影中来做到保护版权防止盗版的作用,这种数字水印并不会影响人们的观影体验,也很好的保护了版权。
二.基于LSB的信息隐藏技术1.LSB信息隐藏方法LSB的英文全称是least significant bit,也就是最低比特位的信息隐藏方法,它是一种较早出线的时域信息隐藏技术,实现也比较简单,用秘密消息替换掉载体中最不重要的比特位。
这种算法的缺点是抗干扰性,即鲁棒性比较差,在有损压缩以及载体格式转换中的密文消息容易受到缺损,优点是根据载体的容量大小可以隐藏大量的密文消息,并且对于原始数据的保护比较好,隐蔽性强,人的感官几乎不能分辨原始载体和带有密文的载体的区别。
上海电力学院高级程序设计(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. 总结: (5)附件: (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 201225信息安全无给每个控件添加Callback代码。
再添加代码之前要为该fig文件命名。
我在本次实验命名为LSB3333.fig。
信息隐藏实验二LSB隐写分析姓名:周伟康学号:班级:一:实验要求1、针对自己实现的隐写算法(嵌入、提取),计算隐蔽载体的PSNR值,通过PSNR值来评估隐写对图像质量的影响,并与主观感受做对比。
2、实现一种隐写分析方法,对隐蔽载体进行检测(卡方、RS……)二:实验步骤1、编写随机选点函数,完善顺序和随机两种LSB信息嵌入和提取。
%随机间隔选点函数%[row, col] = randinterval(test, 60, 1983);function [row, col] = randinterval(matrix, count, key)[m, n] = size(matrix);interval1 = floor(m * n / count) + 1;interval2 = interval1 - 2;if interval2 == 0error('载体太小,不能将秘密消息隐藏其内!');endrand('seed', key);a = rand(1, count);%initializerow = 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;end选取8*8的矩阵测试2、对比原始图像和隐藏信息后图像,计算隐蔽载体的均方差(MSE)进而计算峰值信噪比(PSNR),评估隐写对图像质量的影响。
一个图像一次小波变换程序void CBDBN::once(int n){int i,j;LONG wide,height,nWide,nHeight;LPBYTE temp1, temp2, m_pData2;PostIndex=PostDib->GetIndex();for(int k=1;k<=n;k++){wide=PostDib->Width();height=PostDib->Height();PostIndex=PostDib->GetIndex();m_pData2=*PostDib->GetIndex();//分配临时数据空间temp1 = new BYTE[height*wide];temp2 = new BYTE[height*wide];nWide=wide/pow(2,k);nHeight=height/pow(2,k);//完成行变换for(j = height*(1-1/pow(2,(k-1))); j < height; j ++){for(i = 0; i < nWide; i ++){int w = i *2;temp1[j*wide+i] = PostIndex[j][w]; //偶temp1[j*wide+nWide+i] = PostIndex[j][w+1]; //奇}}//通过图像的差分,完成小波变换for(j= height*(1-1/pow(2,(k-1))); j<height; j++){for(i=0; i<nWide-1; i++){temp1[j*wide+nWide-1+i] =temp1[j*wide+nWide-1+i] - temp1[j*wide+i]+128; }}//完成列变换for(i = 0; i < wide/pow(2,k-1); i ++){for(j = height*(1-1/pow(2,(k-1))); j < height*(1-1/pow(2,(k-1)))+nHeight; j ++) {int m, h;m=height*(1-1/pow(2,(k-1)));h= (j-m)*2 ;temp2[j*wide+i] = temp1[(m+h)*wide+i]; //eventemp2[(nHeight + j)*wide+i] = temp1[(m+h+1)*wide+i]; //odd}}//通过图像的差分,完成小波变换for(i=0; i<wide/pow(2,k-1); i++){for(j = height*(1-1/pow(2,(k-1))); j < height*(1-1/pow(2,(k-1)))+nHeight; j ++) {temp2[ j*wide+i] = temp2[j*wide+i]-temp2[(nHeight + j)*wide+i]+128;}}//小波经过处理后,放入显示缓存中for(j = height*(1-1/pow(2,(k-1))); j < height; j ++){for(i=0; i<wide/pow(2,k-1); i++){PostIndex[j] = temp2[j*wide+i];}}//删除临时的数据空间delete temp1;delete temp2;}}。