AES加密进行BMP图像信息隐藏的算法实现.doc_第1页
AES加密进行BMP图像信息隐藏的算法实现.doc_第2页
AES加密进行BMP图像信息隐藏的算法实现.doc_第3页
AES加密进行BMP图像信息隐藏的算法实现.doc_第4页
AES加密进行BMP图像信息隐藏的算法实现.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录目录1摘要2Abstract3第一章 引言41.1信息隐藏技术的提出41.2研究方向和应用领域51.3发展现状71.4信息隐藏技术的特点81.5基本算法91.6本文主要研究内容10第二章信息隐藏技术基础介绍112.1信息隐藏的基本框架112.2BMP图像格式132.3AES加密算法14第三章 采用AES加密进行BMP图像信息隐藏的算法实现183.1算法实现183.2 LSB算法原理213.3试验结果验证253.4本算法的优缺点26第四章 总结与展望27参考文献28摘要在基于互联网的通信过程中,人们往往最担心的就是通信数据的安全性,在特殊的通信环境,如军事通信、金融通信等等,更是如此。但是,由于互联网自身的特点,在通信过程中,信息可能会受到各种各样的无法预料的攻击。这种情况相当危险。但是,加入采用信息隐藏技术,即将重要信息做为秘密信息嵌入到看起来平常的介质中间如图片等,攻击者无从得知图片中含有秘密信息,因此则大大增强了网络通信的安全性。本文在传统信息隐藏技术基础上,提出了一种结合了AES加密技术的BMP图像信息隐藏算法。关键字:信息隐藏,加密,最低有效位,媒介AbstractIn the Internet-based communication, people are most concerned about the communication of data security,especially in special communications environment, such as military communications and finance communication. However, due to its own characteristics of the Internet, information will encounter various unexpected attack in communication. This situation is quite dangerous.Using information hiding,that important information is hidden into the medium which looks usual,such as a picture,it is greatly increased the security of network comunication.On the basis of traditional information hidding technology,this article introduces a informaton hiding algorithm on BMP picture which combines aes encrypthion.Key words : information hidding, encrypthion,LSB,medium第一章 引言1.1信息隐藏技术的提出随着多媒体应用技术的不断发展,以及互联网技术的普及和成熟,数字媒体受到了人们的极大欢迎,其数量也出现了几何级数式的增长。互联网的出现改变了人们传统的交流和获取信息的方式。它使得这个过程变得更加迅速、方便、经济。而多媒体技术的发展更是日新月异,传统的信息媒体都不得不走向数字化的道路,如报纸、书籍、图片、音乐、电影等等。多媒体信息的多样化使得人们的生活变得越来越丰富多彩。但这个过程同样涉及到非常严重的问题:知识产权问题和网络安全问题。因为在互联网上获得数字媒体的手段具有多样化和隐蔽的特点,并且,对这些媒体的修改、复制、发布的方法日益完善和成熟,这使得数字媒体的知识产权问题十分严重,互联网上的盗版行为十分猖獗,比如说音乐的非法上传和下载。另外,由于互联网具有高度的开放性、自主性,使得信息传输过程的安全性得不到有力保障,黑客攻击企业、政府以获取重要情报的事件屡见不鲜。而传统的加密术都是基于密码学的,它的弱点在于它暴露了重要信息的位置,容易吸引攻黑客的注意力,使其得以进行有针对性的攻击。另一个弱点则是,随着电脑硬件的不断升级,计算机的计算速度不断加快,使得密码学算法的安全性变得越来越脆弱。信息系统正面临着信息的保密性、完整性和可控性的威胁。为了应对这两个方面的困难,信息隐藏技术作为一门区别于传统的信息安全技术,引起了人们的极大兴趣。很多专家学者投入到信息隐藏技术的研究之中,并取得了巨大进展。不仅有大量的论文在国际会议和学术期刊上发表,甚至有些成熟、有效的算法已经运用到工业生产中了。信息隐藏,就是在公开的信息中加入秘密信息,以达到隐藏秘密信息的目的。在多媒体的信息隐藏中,公开信息就是一种多媒体,如声音、视频、图像或者普通文档,它作为一种宿主信号,可以利用人类感官的钝性,秘密加入隐藏信息。这个过程由于媒介降质极小,而使得人无法利用感官察觉隐藏信息的存在。这样,不仅隐藏了信息的内容,而且隐藏了信息的存在。这样即大大提高了信息的安全性。信息隐藏技术与密码学技术的不同之处在于,信息隐藏技术隐藏了信息的存在性,即第三方难以察觉公开信息中存在着秘密信息,因此不会产生主动攻击的心理。这种用于秘密信息传输的信息隐藏技术又称为“隐写术”(Steganography)。而密码学技术是可以让第三方知道存在着秘密信息,它的着重点是在考虑如何提出更加有效地让第三方难以破解的算法。因此它的缺点就是容易暴露自身,引起第三方攻击。在知识产权保护方面,信息隐藏技术同样有其用武之地。作为一种新的多媒体版权保护手段,它是将多媒体的特定的标志,如版权信息等,作为防伪标志,嵌入隐藏到多媒体文件中,以此来保护多媒体的版权。这种方法同样难以引起攻击者的注意。这种手段通常被称作“数字水印”(Digital Watermarking)。1.2研究方向和应用领域知识产权的保护可以说,正是在信息时代数字媒体的版权问题才导致和促进了数字水印的产生和发展。在数字水印技术诞生之前,数字媒体的版权所有者不得不容忍盗版侵权行为,或者为了保护版权,而采用一些可能对数字媒体质量产生严重破坏的方法加上版权所有标志,而即使这样,这种标志也容易被篡改而失去版权保护作用。数字水印技术发展之后,这种情况大有改观。比如,美国的Adobe System公司在它的图像处理软件Adobe Photoshop中加入数字水印的模块;五大唱片公司博德曼、百代、索尼、环宇和华纳宣布与IBM联合开发一个在互联网安全、快速、方便地发布数字媒体试听产品的试验系统,有效地保护了音乐、电影作者的知识产权。图1-1 欧盟提出的一个数字作品交易框架隐秘通信在军事应用中,隐秘通信占有极其重要的地位,军事战争的双方都把相当的精力放在情报窃听与反窃听上。军事系统中更加倾向于使用扩频调制等通讯手段来达到干扰敌人隐藏自己的目的,在加密信息的同时,更加注重的是不让敌人检查到自己的信号。在民间的互联网通信中,由于人们对于匿名通信以及言论自由的渴望,使得隐秘通信有了一个很大的表演舞台。基于信息隐藏技术的互联网通信还表现在电子选举和电子购物中。这样的互联网应用广泛采用了信息隐藏技术以保护网络使用者的隐私。数据的不可抵赖性在企业间的商业交易中经常会碰到这样的情况,甲方向乙方购买货物时先通过网络银行向乙方账户中汇款,而乙方收到汇款却声称自己没有收到汇款而拒绝向甲方发货,这时数据的不可抵赖性就发挥了它的作用。数据的不可抵赖性保证了交易的任何一方都不能抵赖自己发出的信息,以及不能否认自己接受到对方的信息,这是网上交易能够正常进行的基础。信息隐藏技术中的脆弱水印是目前解决这个问题的有效方法之一。它将各自的特征以水印标记的形式嵌入到发送的信息中,而这种水印是很难或者不能被修改以及去除的。印刷品防伪电子商务的兴起,也为信息隐藏技术提供了用武之地。在电子商务中产生的各种电子票据,其有效性和防伪性有着不言而喻的重要性的。将在印刷品中嵌入数字水印技术以用于防伪是最近才开始研究的课题。将防伪水印隐藏在电子票据之中,经过打印之后,水印是仍然存在的,因此再扫描成数字形式,通过软件将水印提取出来,可以验证电子票据的真实性。这样就可以不给倒卖假票的犯罪分子以可乘之机。1.3发展现状信息隐藏虽然是计算机技术尤其是互联网技术发展成熟之后兴起的学科,但它是有着非常悠久的历史渊源的。提到信息隐藏,人们会想起密码;而密码术的起源可以追溯到四千多年前的古埃及、古罗马、古希腊。而基于计算机的信息隐藏技术则可以认为是从1996年在英国剑桥召开的国际第一届信息隐藏学术研讨会开始的。这一会议于1998年在美国的波特兰, 1999年在德国的德雷斯顿,2001在美国的匹兹堡,2002年在荷兰,2004在加拿大的多伦多,2005年在西班牙的巴塞罗那分别召开过,发表了一些高水平论文。一些有影响力的国际会议(IEEE,SPIE等)出版了与信息隐藏相关的专题;一些国际权威期刊,如IEEE图像处理、IEEE会报等许多国际重要期刊相继出版信息隐藏技术的专刊。另外,Stefan Katzenbeisser和Fabien A. P. Petitcolas等人出版了专著Information hiding techniques for steganography and digital watermarking,是这个领域的权威著作。不仅理论界在深入地研究信息隐藏技术,而且工业界也在不断地探索。近几年来,越来越多的高科技公司致力于信息隐藏或者数字水印技术的研究,推出了成熟的视频、音频、图像版权保护数字水印系统。除了之前提到的Adobe System公司的Adobe Photoshop,另外还有Signum Technologies公司推出的suresign水印系统,BluesPike公司推出的Giovarmi数字水印系统,Cognicity公司推出的Audiokey MP3水印系统等。1.4信息隐藏技术的特点信息隐藏技术是将秘密信息加入到公开信息之中,以达到不被第三方发觉秘密信息的目的。它要求不被第三方发觉,因此对于公开信息,也就是原始视频、音频、图像等媒介,的改变极小,使人用直接用眼睛、耳朵无法察觉到这种改变,无法意识到秘密信息的存在,从而逃避拦截者的攻击。由于多媒体的应用非常广泛,信息隐藏技术也有很多分支,但总结起来,有以下几点:(1) 不可感知性:这是对于信息隐藏技术的一个最基本要求。秘密信息必须“天衣无缝”地嵌入到原始媒介之中,不仅不影响计算机对这些数据的正常读写,而且不会引起人的感官注意。假如在嵌入的过程中留下了明显的痕迹,则严重破坏了系统的安全性。(2) 鲁棒性鲁棒性,也被称作健壮性,表明信息隐藏技术应该能承受一定量的恶意的或者非恶意的攻击或者干扰。如果承受了较大强度的信号干扰或者信号处理,仍能够将原始媒介中的秘密信息提取出来,则说明该技术鲁棒性较强;反之,媒介信息若稍有改动,秘密信息便不可提取,则说明其鲁棒性太差。因为在信息传播过程中,信号难免会受到或大或小的干扰,因此保持一定的鲁棒性是非常重要的。(3) 承载量假如信息隐藏被用于保护数字版权的数字水印等,则由于水印量比之于媒介信息量非常小,对于承载量可以不做要求。但对于秘密通信来说,在一定的信息媒介中,嵌入的秘密信息量越大,即承载量越大,网络传输的效率越高。假如承载量太小的话,秘密通信的价值将大打折扣。但同时,承载量增大往往意味着不可感知性和鲁棒性的降低,因此,在具体应用时,应该权衡这几方面的利弊关系。(4) 安全性在信息隐藏技术中,同样会涉及到加密术。在秘密信息嵌入到数字媒体的过程中,只有先将秘密信息加密,再将其嵌入,才能提高信息的安全性。在版权保护方面,它要求第三方未经授权不可伪造或者检测水印。这样,在设计具体算法时,应该考虑到加密算法的安全性问题。1.5基本算法(1)空间域算法最低有效位算法(Least Significant Bit,LSB)其基本思想是,在图像中,改变每个像素点的最低位不会对视觉产生影响。基于此,可以用秘密信息直接代替数字图像的最低位。这是一种经典的空间域的信息隐藏方法。它满足了秘密信息的不可见性,并且算法简单,且计算机处理较快。Patchwork方法这是一种统计算法。首先随机选取N对像素点,然后通过增加像素对中一个点的亮度值,而相应降低另一个点的亮度值。这样整个图像的平均亮度保持不变。文档结构微调方法(2)变换域算法离散余弦变换(DCT)早期的DCT算法是Cox等人提出的。该算法利用了图像编码中的冗余信息,对图像进行从空间数据到空间频率域的变换。在变换过程中,可以获得图像的某些压缩特性和像素的统计值。DCT算法对压缩、噪声干扰等攻击具有较强的鲁棒性。离散傅立叶变换(DFT)离散傅立叶变换在信息隐藏和数字处理技术中占有重要地位,通过傅立叶变换,数字信息既可以隐藏在数字媒体的幅度上,也可以嵌入到媒体的相位中。小波变换(DWT)将图像平面进行分割,得到一组空间、频率均不相同的子图像。这些子图像刚好能够不重叠地组合成原始图像。对于已经分割的图像,还可以再次分割。子图像面积越小,则在时域和频域上的局部化程度越高。如果时域和频域都尽可能地小,获得的信号就越精确。但时域和频域都是有一定约束的,不可能无限小。因此需要平衡时域和频域的关系。1.6本文主要研究内容图像信息隐藏技术是一门新兴的学科,也是一个非常热门的研究领域。虽然有许多人研究出了信息隐藏的许多算法,发展了信息隐藏的众多分支。虽然这些算法有的已经十分成熟,但更多的仍有待改进。所以,本文是在前人已有的算法上加以改进探索,提出一种结合了信息隐藏技术和加密术相结合的基于BMP图像的加密信息隐藏算法。主要本文分为五个部分,各章节的内容与安排如下:第一章引言,介绍了信息隐藏技术的背景、应用领域、常见算法和本文主要研究内容;第二章信息隐藏技术基础介绍,包括信息隐藏的基本框架、BMP图像格式、AES加密算法等;第三章详细介绍本文提出的基于BMP图像的加密信息隐藏算法的原理和实现,详细阐述了信息写入图像的过程,给出了算法的试验结果,以及算法的优缺点;第四章总结和展望。第二章信息隐藏技术基础介绍在基于互联网的通信过程中,人们往往最担心的就是通信数据的安全性,在特殊的通信环境,如军事通信、金融通信等等,更是如此。但是,由于互联网自身的特点,在通信过程中,信息可能会受到各种各样的无法预料的攻击。这种情况相当危险。但是,加入采用信息隐藏技术,即将重要信息做为秘密信息嵌入到看起来平常的介质中间如图片等,攻击者无从得知图片中含有秘密信息,因此则大大增强了网络通信的安全性。在计算机中,所有信息都是以二进制0或者1的形式存在的,因此,一句话和一张图片在计算机中的表示并无本质区别。因此可以将一句话的二进制数据流嵌入到公共媒介中,发送者将公共媒介发送出去。在公共媒介的传输过程中,攻击者无法察觉其中是否含有秘密信息,因此这种方法具有隐蔽性,大大降低了其受攻击的风险。接收者在收到发送过来的公共媒介之后,由于秘密信息和公共媒介同样为二进制流,因此接收者可以通过算法将其中的秘密信息无损地提取出来,已完成整个通信过程。2.1信息隐藏的基本框架一般地,一个信息隐藏系统的模型描述如下。一个系统主要包括两个部分:信息嵌入部分和信息提取部分。首先,获得秘密信息的原文,和一种加密算法的密钥,经过运算后产生了经过加密的密码信息的密文。其次,通过信息隐藏算法,嵌入到给定的公开信息(比如说一张图片)中。可以用公式表示为:encoded_message=F(original_message,key);embedded_data=G(original_data,encoded_message);其中,original_message是秘密信息的原文,key是加密算法的密钥,F是加密算法,得到的结果encoded_message是秘密信息的密文;original_data是公开信息的原始数据,G是信息隐藏算法,得到的结果embedded_data是嵌入秘密信息的公开信息。信息提取部分则是以上过程的逆过程。首先,获得了一份公开信息后,通过算法G的逆向算法,得到嵌在其中的秘密信息的密文,然后通过跟F算法相反的解密算法,通过秘密信息的密文和密钥,得到秘密信息的原文,这样就完成那个了信息提取的整个过程。可以用公式表示为:encode_message=G(embedded_message);original_message=F(encoded_message,key);其中,G是信息提取算法,F是解密算法。这两个部分可以用图像表示:嵌入部分提取部分秘密信息加密算法F密钥公开信息嵌入算法G密钥秘密信息解密算法F提取算法G具体过程详细描述如下:发信人甲需要将秘密信息original_message发送给乙,于是甲选择一个公开信息,比如说一张图片,一段音频等,我们记作original_data,将original_message嵌入到original_data中去。在嵌入之前,由于考虑到安全性,先将original_message进行加密处理F(original_message,key),得到了加密后的密文encoded_message。然后,对于encode_message和original_data做运算G(original_data,encoded_message)得到嵌入了密文的隐秘数据embedded_data。甲将embedded_data发送给乙。乙在接收到embedded_data之后,先通过G(embedded_message)运算将密文从embedded_data中提取出来,再通过F(encoded_message,key)运算将密文解密,得到甲想发送的原始信息。这里,甲乙二人必须事先约定一个密钥key,才能保证信息传输的正确性。2.2BMP图像格式BMP是Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。一个标准BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。(1) 数据结构:BMP文件头BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置信息。偏移量(相对本结构)00H02H06H08H0AH大小(byte)24224数据位图类型位图大小保留(0)保留(0)位图数据起始位置:位图信息头BMP位图信息头数据用于说明位图的尺寸等信息。偏移量(相对本结构)00H04H0CH0EH10H大小(byte)482236数据本结构大小位图宽与高目标设备的级别每个像素所需位数其他:颜色表颜色表用于说明位图中的颜色,它有若干表项(RGBQUAD类型的结构),每个表项的结构如下:偏移量(相对本结构)00H01H02H03H大小(byte)1111数据蓝色亮度绿色亮度红色亮度保留(0)颜色表中RGBQUAD结构的个数由位图信息头中每个像素所需位数(biBitCount)决定:当biBitCount=1,4,8时,分别有2,16,256个表项;当biBitCount24时,没有颜色表项。:图形数据图形数据记录的是位图的每个像素的值,记录顺序是在扫描行内从左到右,扫描行之间是从下到上。位图一个像素值所占的字节数:当位图为双色时,每个像素所需位数1,8个像素占一个字节;当位图为16色时,每个像素所需位数4,2个像素占一个字节;当位图为256色时,每个像素所需位数8,1个像素占一个字节;当位图为64K色时,每个像素所需位数24,1个像素占三个字节;Windows规定一个扫描所占的字节数必须是4的倍数(即以long为单位),不足的以0填充。(2)存储算法BMP文件通常是不压缩的,所以它们通常比同一幅图像的压缩图像文件格式大很多,例如,一个800600的24位几乎占据1.4MB空间。图像所浏览器读取基于字节的ASCII值计算像素的颜色,然后从调色板中读出相应的值。2.3AES加密算法AES的全称是Advanced Encryption Standard,即高级加密标准。由于对称密码的发展,计算机芯片速度不断提高,传统的加密算法(如DES数据加密标准算法)由于密钥长度较小,其安全性已经收到了威胁,已经不适应当今分布式开发网络对数据加密安全性的要求,需要一种新的高级加密标准来替代它。因此,美国国家标准技术研究所(NIST)于1997年开始征集AES算法,2000年确定Rijndnel为最终算法,2001年被美国商务部批准为新的联邦信息加密标准。AES作为新一代的数据加密标准具有强安全性、高效率、灵活等优点,被广泛地应用在各个领域。AES的设计原则是抵抗所有已知的攻击、在各种平台上易于实现、速度快、设计简单。它是一个分组密码算法,其分组长度和密钥长度相互独立,都可以改变。分组长度(bits)和密钥长度均可分别取128,192,128。(1) 一些术语和定义:状态(State)运算的中间结果称为状态;:State的表示状态用元素为一个字节的矩阵表示,它的行数为4,列数用Nb表示。当Nb=4时,分组长为128(bites);当Nb=6时,分组长为192(bites);当Nb=8时,分组长为256(bites);:密码密钥(Cipher Key)的表示Cipher Key同样用一个4行矩阵来表示,列数用Nk表示。同样的,当Nk分别取4,6,8时,密码密钥长度分别为128,192,256;:轮数(Round)加密运算由若干次包含SubBytes、ShiftRows、MixColumns、AddRoundKey的运算序列组成(最后一次运算不包含MixColumns),每一次序列运算叫作一轮,这些序列运算的次数称做轮数,轮数由分组长度(Block Length)和密钥长度(Key Length)决定,具体取值如下表:轮数(Round)Block Length=128Block Length=192Block Length=256Key Length=128101214Key Length=192121214Key Length=256141414:分组明文分组和密钥组织排列:0123456789101112131415相应排列阵列:0481215913261014371115(2) AES算法如下图所示:图2-1 AES算法加密算法详解:1.SubBytes(字节转换)这是一个以字节为单位的非线性取代运算,独立地在每个状态字节上进行运算。它包括两个变换:在有限域GF(28)上求乘法逆,”00”映射到它本身;:在GF(2)上进行仿射变换。2.ShiftRows(移行转换)State的第0行不动,第1行左移一个字节,第2行左移两个字节,第3行左移三个字节。3.MixColumns(列混合)将状态的列看作是有限域G4F(28)上的多项次a(x),与多项式c(x)03x3+01x2+01x1+02相乘(模4+1)。4.AddRoundKey(轮密钥加)将轮密钥与状态按比特异或。论密钥是通过Key Schedule过程从密码密钥中得到的,轮密钥长度等于分组长度。 第三章 采用AES加密进行BMP图像信息隐藏的算法实现下面详细介绍本文所提出的经过改进的基于BMP图像的LSB信息隐藏算法。众所周知,虽然传统的LSB算法有简单、执行速度快、不可见性好等优点,但假如攻击者一旦猜到其截获的图像采用了LSB算法,则不难将嵌入其中的秘密信息破解。为了增加算法的安全性,可以将秘密信息在嵌入图像之前做一定的处理,即进行AES加密,然后将生成的密文嵌入到图像之中,这样即使截获者猜到其中含有秘密信息并且采用LSB算法,而由于AES加密算法具有极高的安全性,截获者也很难破解其中的秘密信息。信息隐藏技术中最简单和最有代表性的就是用信息代替图像中的最低有效位的算法。图像的最低有效位也称为最不显著位,它是指数字图像的像素值用二进制表示时的最低位。在单个LSB编码中,LSB直接被信息编码所取代。由于LSB位平面携带着秘密信息,因此,在嵌入了秘密信息的图像中,只需提取含秘密信息的LSB位平面即可。可以将秘密信息的编码看成二进制数据流,经过AES加密之后,得到一个密文信息编码的二进制数据流。将这个二进制数据流的每一位写入到图像每个像素点的LSB中去,这样,既将信息嵌入到了图像中,又让人难以直接从肉眼上察觉。并且,采用了AES加密技术,即使攻击者察觉并获得了图像中的密文,由于其没有密钥,他也无法解读其中的含义。3.1算法实现采用AES加密进行BMP图像信息隐藏的算法:对秘密信息s进行AES加密处理,得到密文s;:采用LSB算法将密文s写入到BMP图像中。算法流程图如下:图3-1 信息隐藏算法流程图:对秘密信息s进行AES加密处理,得到密文s为了方便起见,AES加密算法的分组长和密钥长均为128。将秘密信息看作一个比特流(一个英文字母占8比特,一个汉字占16比特),将其以128为组长分为若干组,对每组分别进行AES加密。若这个比特率长度不是128的倍数,则最后一个分组的长度为m128。这时对其加密应采用密文挪用加密技术(如图3-2所示)。该方法的思路是,对最后一个短块M(n)加密之前,首先从它前一个数据块M(n-1)对应的密文C(n-1)中挪车刚好够填充的位数填充到最后一个短块中去,使它的长度刚好为128,然后对其进行加密得到C(n)。这时,被挪用的那个密文C(n-1)虽然位数不够128,但是C(n)长度为128,并且M(n-1)+M(n)=C(n-1)+C(n),不会造成数据扩张。解密的时候同这个过程相反,能够得到正确的明文(如图3-3所示)。密文挪用加密过程:图3-2 AES密文挪用加密过程密文挪用解密过程:图3-3 AES密文挪用解密过程:将密文s嵌入到BMP图像中。由于涉及到BMP的图像操作,因此须将BMP图像文件的各个数据块读到内存中。图3-4 读取BMP图像文件流程图由于BMP文件头中偏移量为06H处的两个字节为系统保留,统一为0,因此,这两个字节可用于保存我们将要嵌入的秘密信息的长度。信息头和调色板都不必改动,我们只需将秘密信息的各个比特嵌入到位图数据即可。3.2 LSB算法原理LSB的含义是Least Significant Bit,即最不重要位。任何一副图像的每一个像素的每一位对于图像的贡献是不一样的。其中,像素的最低有效位对于图像的贡献最小,它的改变对于整个图像的改变影响不大。因此被称为最不重要位LSB算法是一种典型的空间域数据隐藏算法。通常,它包含如下步骤:第一步:读入载体图像,决定载体的嵌入位数;第二步:对载体图像进行处理,将其图像的LSB置为0;第三步:读入秘密信息;第四步:将秘密信息的ASCII编码的每一位插入到每一个像素的LSB位上。下面,从图3-5到图3-9演示了将一个字节的数据用LSB算法插入到一个8位的灰度图像(每个像素用一个字节表示)中的情况。图3-5 某图像数据(红色部分为最低有效位LSB)图3-6 一个字节的信息ASCII码值图3-7 将图像数据LSB清零图3-8 将信息数据的每一位依次写入到LSB中图3-9 嵌入了信息后的图像数据以24图为例,由于位图数据的三个字节代表一个像素,于是我们每三个字节插入一个秘密信息的比特位。具体算法如下:int bmp_data_pos,info_pos;unsigned char mask;bmp_data_pos=2,info_pos=0;while(info_posm_info.GetLength()unsigned char ch;ch=m_infoinfo_pos;mask=1;while(mask!=0)bmp_databmp_data_pos=(bmp_databmp_data_pos|1)&( (ch&mask)=0?254:255);mask=mask1;bmp_data_pos=bmp_data_pos+3;info_pos+;其中bmp_data和m_info分别是BMP图像的位图数据和秘密信息的密文。它们都是unsigned char型的数组,bmp_data_pos和info_pos分别是其指针。为了简单起见,我们不妨设bmp_data是一个包含24个元素的数组(也就是8个像素),而bmp_data只包含一个元素,这样,m_info含有8个比特,这样根据前面的分析,m_info刚好可以嵌入到bmp_data中。m_info中数据为01101110b。bmp_data数据如下(二进制):100001001000010010000110100001010100001101101111011111111000001110000101100001011000001110000001010001110111010110000010100000110110001101100011011001000110100100111100011010100110110001100101在这个表格中,每一列是一个像素的三个字节。下面的工作就是,把m_info嵌入其中被标记成红色的字节中去,每一个字节容纳一位比特。首先:bmp_data_pos=2,info_pos=0;即选中了表格中第三行第一列的字节bmp_data2=0110011b,此时mask00000001b,即意味着我们将要把m_info的最后一位0放入字节bmp_data2的最后一位。其次:bmp_databmp_data_pos=(bmp_databmp_data_pos|1)&( (ch&mask)=0?254:255);其中,bmp_databmp_data_pos|1的结果就是将bmp_databmp_data_pos的最后一位变成1,ch=m_info0=01101110b,ch&mask的结果就是ch的最末位的值(0),即当ch的最末位为0时,bmp_databmp_data_pos|1的结果与11111110b进行与运算,将0写入bmp_databmp_data_pos的末位。此时将m_info0的最末位写入bmp_data2的最末尾,bmp_data2=01100010b。下一步:mask=mask1;bmp_data_pos=bmp_data_pos+3;mask变成00000010b,bmp_data_pos=5,即表示将m_info0的第二位写入bmp_data5的末位。进入新的一轮循环,往复执行循环体,直至将整个字节写入bmp_data中,此时mask=0。这个循环体的判断条件是mask!=0,因为我们发现当mask=10000000b时,是将m_info0的最高位写入bmp_data中,已经将一个完整的字节写入到bmp_data中了,再进行下一个字节的写入。此时mask进行左移运算得到mask=0,跳出循环,执行info_pos+,选中下一个m_info中的字节,进行写入。而由于在此例中,m_info只有一个字节,因此到此即结束算法。算法结束之后,bmp_data中的数据为:100001001000010010000110100001010100001101101111011111111000001110000101100001011000001110000001010001110111010110000010100000110110001001100011011001010110100100111100011010110110110101100100注意标记为红色的这些字节的最后一位(用蓝色标记)。从右向左把它们取出来,组成一个字节01101110b,即为m_info0。3.3试验结果验

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论