文本文档信息隐藏软件设计与实现设计_第1页
文本文档信息隐藏软件设计与实现设计_第2页
文本文档信息隐藏软件设计与实现设计_第3页
文本文档信息隐藏软件设计与实现设计_第4页
文本文档信息隐藏软件设计与实现设计_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

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

文档简介

如不慎侵犯了你的权益,请联系我们告知!西南交通大学本科毕业设计(论文)文本文档信息隐藏软件设计与实现如不慎侵犯了你的权益,请联系我们告知!毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作 日日 使用授权说明 的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与论文的部分或全部内容。如不慎侵犯了你的权益,请联系我们告知!本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同:如不慎侵犯了你的权益,请联系我们告知!毕业设计任务书3日 题目文本文档信息隐藏软件设计与实现 另一宿主信号的过程,可用于版权保护、重要数据的完整性鉴定和保密通信等。小没有明显变化,还要实现该文本文档信息的提取。生应完成的任务2.对文本文档信息隐藏进行需求分析,明确实现功能要求;(1周)第二部分配置一个软件开发平台、学习编程(4周)第三部分编制一个文本信息隐藏和恢复程序(6周)如不慎侵犯了你的权益,请联系我们告知! (2周) 如不慎侵犯了你的权益,请联系我们告知! 第五部分撰写毕业设计(论文)(2周) (1周) 注 年月日年月日如不慎侵犯了你的权益,请联系我们告知!摘要重大影响。由于计算机技术的迅速发展,具有强大计算能力仅靠通过增加加密算法的密钥长度来达到增强信息的安全性法。但对信息隐藏技术而言,可能的监测者或非法拦截者难复。从信息隐如不慎侵犯了你的权益,请联系我们告知!Abstractonalgorithminordertoenhancesecurity.Oninformationhiding,itisntesting.Thissoftwareisdevelopmentedinthewindow7environment,如不慎侵犯了你的权益,请联系我们告知!t 意义 1 2.2信息隐藏技术 4 如不慎侵犯了你的权益,请联系我们告知! 如不慎侵犯了你的权益,请联系我们告知!第1章绪论1.1引言自20世纪90年代初以来,信息隐藏技术作为信息安全中的新的重要课题引起了国际学术界的普遍重视。为了满足保护多媒体产品知识产权不断增长的需求,由于密码技术受到限制而又必须进行隐秘通信的特殊要求,对信息隐藏中的数字水印技术和隐蔽通信技术的研究具有重大意义。1.2课题研究背景和意义的如不慎侵犯了你的权益,请联系我们告知!产生的密文相比而言更容易被截获。同时,随着计算机计算能力的不断增强,使得被截获的密文以更高的几率被破解。可以说,随着计算机工业发展,现存加密算法形成的安全性会不断下降。现代信息隐藏技术针对日益繁杂的计算机网络信息传输安全问题,运用密码学的基本理论,发展了古代隐写术,使得传统的隐写技术适应现代的传输介质,并且形成了一些独特的技术形式。现代信息隐藏技术中一个重要如不慎侵犯了你的权益,请联系我们告知!字水印技术,可以用来跟踪产品,保护版权。版权保护也是信息隐藏技术迅速发展的原动力,这一特性吸引了诸多政府、公司和研究机构参与研究。尽管目前的各种商业化信息隐藏系统的结构各不相同,但是绝大多数都是在版权保护基础上设计的。数字水印技术解决了密码技术不能跟踪版权的问题。另外一个重要的分支是现代隐写术,实现秘密信息透明传输的同时,通过传播媒介普遍或常见的特点泛地关注和研究[2]。1.3国内外研究现状信息隐藏技术是近年来信息安全领域发展起来的一个新研究热点。信息隐藏是在图像、声音、视频、文本等数字媒体信号中嵌入不可察觉的隐蔽数据。信息隐藏有两个重要分支,数字水印技术和隐写技术20。世纪90年代以来,人们对数字水1.3.1数字水印的发展现状数字水印技术的发展很快,研究数字水印的文章陆续发表,且文章数呈快速增长的趋势,几个有影响的国际会议(如IEEEICIP、IEEEICASSP、ACMMultimedia如不慎侵犯了你的权益,请联系我们告知!1.3.2数字隐写的发展现状用的技术包括将LSB嵌入法直接用于图像的像素、颜色指数、变换系数、结合JPEG例如基于小波变换的有损压缩嵌入技术[10],具有抗压缩的能力;通过修改量表嵌入数据,在提高嵌入量的同时能达到很高的隐蔽性。一些隐写算法已被用于开发信息G入法和基于压缩图像的隐写,结合安全性考虑作了理论分析[15][16]。1.4本论文的主要内容和结构安排论文探讨并设计了一种基于改进的最低有效位法(文中称为基于彩色静止数字图像的信息隐藏算法)的软件,实现了文本文档的隐藏和正确恢复。主要完成了需求分析、软件设计和实现、软件测试的工作。本论文共有四章,各章节主要内容如下:第1章:信息隐藏技术的背景和意义,对国内外在该领域的研究状况进行必要说明,并简述论文主要工作和文章结构安排。第2章:主要介绍信息隐藏的基本原理和方法,数字图像的格式,软件设计采用的算法。第3章:完成了软件需求分析、概要设计和详细设计、编码实现。第4章:详细阐述软件过程,对测试结果进行总结和分析。如不慎侵犯了你的权益,请联系我们告知!第2章信息隐藏技术概述2.1引言信息隐藏技术有丰富的内容,它是集数学、密码学、信息论和计算机技术等为一体的一个交叉性学科信,息隐藏的基本原理和方法是我们研究和应用的根本依据。图像是使用最广泛的信息载体,基于数字图像的信息隐藏有较大的信息容量,因此数字图像是信息隐藏技术主要的载体之一。一种基于彩色静止图像的最低有效位替换算法具有较高的不可觉察性和隐藏率,论文将以其作为软件的隐藏算法。2.2信息隐藏技术信息隐藏技术是把机密信息隐藏在大量信息中不让对手发觉的一种方法。信息隐藏的方法主要有隐写术、数字水印技术、可视密码、潜信道、隐匿协议等。由于信息隐藏不易被发现的优点,信息隐藏技术将在未来网络中保护信息方面起到重要2.2.1信息隐藏基本概念信息隐藏技术是研究如何将某一信息隐藏于另一公开的信息中,然后通过公开信息的传输来传递隐藏的信息。由于含有隐藏信息的媒体发布是公开的,而可能的检测者难以从公开信息中判断隐藏信息是否存在,更加难以截获隐藏信息,从而达到保证信息安全的目的。信息隐藏继承了信息加密的一些基本思想,但是使用密码方法有很多缺点:1.资料加密完全变为秘文,明确地提示攻击者信息的重要性,容易引起攻击者的注意,增加被攻击的可能性;信息隐藏的目的不是限制资料信息的交流存取,而在于保证隐藏信息不被察觉和破坏,不但隐藏了信息的内容而且隐藏了信息的存在。息隐藏有时也称数据隐藏,从广义上看,信息隐藏有多种含义:一是信息的不可见,二是信息的存在性隐蔽,三是信息的接收方和发送方隐蔽,四是传输信道隐蔽。信息隐藏就是将保密信息隐藏于另一非保密载体中,以不引起检查者的注意。这里的载体可以是图像,视频,音频,也可以是信道,甚至是某套编码体制或整个系统。广义上的信息隐藏技术包括隐写术、数字水印、数字指纹、隐蔽信道、低截获概率通信等等;从狭义上看,信息隐藏就是将某一机密信息秘密隐藏于另一公开的信息中,然后通过公开信息的如不慎侵犯了你的权益,请联系我们告知!传输来传递机密信息。狭义上的信息隐藏技术通常指隐写术与数字水印。隐写术将保密的信息隐藏于另一非保密载体中,以不引起检查者的意注。这里的载体形式可以是任何一种数字媒体,比如图像、音频、视频等。隐写术将某一机密信息隐藏于另一公开的载体中,然后通过公开的载体来传递机密信息。因此,可能的检测者或非法拦截者则难以公开地在体制中判断机密信息是否存在,截获机密信息,从而保证机密信息的安全。数字水印技术作为信息隐藏的一个分支,是解决多媒体数据版权保护问题的有效手段之一。它的基本思想是在数字图像、音频、视频等数字产品变换再嵌入到数字产品中。通常变换后的秘密信息称为数字水印。信息之所以能够隐藏在多媒体数据中是因为:其一,多媒体信息本身存在很大的冗余性。从信息论用。其二,人眼或人耳本身对某些信息都有一定的掩蔽效应,比如人眼对灰度的分辨率只有几十个灰度级;对边缘附近的信息不敏感。利用人类的这些特点,就可以好地将信息隐藏起来而不被察觉如不慎侵犯了你的权益,请联系我们告知![17][18][19][20]。2.2.2信息隐藏基本原理信息隐藏技术是集数学、密码学、信息论和计算机技术等为一体的一个交叉性学科,其基本原理是整合密码技术成熟的加密功能,以最终消费者无法感知的变化为改变限度,把待传递的秘密信息嵌入到另一公开传输的信息之中。实际传输的是这一经过融合的信息。信息隐藏技术的基本模型如21:如不慎侵犯了你的权益,请联系我们告知!数字媒介M’’是必需;在相技术优如不慎侵犯了你的权益,请联系我们告知!2.2.3信息隐藏的方法及分类在过去几年中,人们已提出了许多不同的信息隐秘技术,其中许多技术都是基于替换方法或修改方法。即用一个秘密信息替换或修改另一个信号中的冗余部分。从系统的角度来看,信息隐藏技术主要用来实现以下几类保护:防窃听、防篡改、仿伪造、防抵赖。其中防窃听是用某种方式来修改原始对象,要求这种修改不能让人或计算机觉察,因而更强调隐秘性,使得攻击者无法觉察这个通信事件的存在。防篡改要求对普通攻击有一定的鲁棒性,使得在不降低对象质量且保持其有效性的前提下修改或去除隐藏数据是不可能的一。般来说,对信息隐藏技术可作如下分类:1.按保护对象分类主要可分为隐秘通信和数字水印技术。前者保护秘密信息本身,后者保护的是隐秘载体,其中数字水印包括:版权标志:向载体信息中嵌入一定标志信息说明其所有权数字指纹:向载体信息中嵌入合法接受者标志以跟踪非法拷贝行为拷贝标志:嵌入禁止拷贝或允许一次拷贝标志,以限制过度拷贝认证标志:嵌入对修改敏感的水印,以检测载体数据的完整性暗地传送所嵌入的信息。2.按嵌入域可以分为两大类:时空域法和变换域法。时空域法:时空域法是将秘密信息嵌入载体对象的时域或空域中。在空域实现信息的隐藏多采用替换法。由于人们感觉系统的有限性,对某些变化不敏感,可直接用待隐藏的信息来替换载体对象的数据,并保证不会影响载体对象。(1)最低有效位替换法最简单的空域法就是用秘密信息代替图像或音频取样的一个或多个位平面的最低有效位的所有比特。该方法实现速度快,信息隐藏量大,但其抵抗噪声、压缩等攻击的能力差。(2)统计隐藏法中,如不慎侵犯了你的权益,请联系我们告知!如不慎侵犯了你的权益,请联系我们告知!信道、将信息编码在基于调色板图像中、量化和抖动、失真技术等;以声音为载体的空域法还包括回变换域法是指将秘密信息嵌入载体对象的某一变换域中。基于变换域的技术可以嵌入大比特量的数据而不会引起可察觉的变化。这类技术一般基于局部或全部的图像变换,比较常见的变换技术有傅里叶变换、离散余弦变换(DCT)、小波变换、常用的是离散余弦变换和离散小波变换(DWT)。(1)基于DCT的频域方法息应嵌入到图像中视觉感知最重要部分以提高其鲁棒性”的重要观点。具体是将信(2)基于DWT方法率的分析方法,小波变换具有很好的时频、空域局部特性,可以充分利用人类视觉(3)基于DFT的频域方法DFT在信号处理中已经被广泛引用,在水印领域中也很有用处。它具有如下优码。(4)扩展频谱法际所需频带,在每频带信号中信号都是极其微弱且不易觉察的,而且频带的扩展与信号无关。图像频域可被看作信号传输的通道而水印看作是需传输的信号。图像所有者知道水印的位置和内容,在验证水印时很容易把扩散到所有频带上的微弱信号如不慎侵犯了你的权益,请联系我们告知!载体的一些统计特征显著地进行修改,否则就不更改载体。实际操作中接收者必须与信息隐藏替换方法相比,变形技术在解码时要求已知原始图像信息。发信方对载体某种次序进行修改,得到隐藏对象。这种次序是根据要传输的秘密信息而定的。接收方必须得到原始图像才能测量与隐藏对象的差异,进而重构发信方相应于2.2.4信息隐藏的特性信息隐藏不同于传统的加密,因为其目的不在限制正常的资料存取,而在于保证隐藏数据不被侵犯和发现。另外,由于信息隐藏必须考虑隐藏的信息在经历各种环境、操作之后,仍需具有免遭破坏能力;因此,信息隐藏技术必须考虑正常的信息操作所造成的威胁,使机密资料对正常的数据操作技具有免疫能力。这种免疫力的关键是要使隐藏信息部分不易被正常的数据操作,如通常的信号变换操作或数据压缩所破坏。对含有秘密信息的隐秘载体进行操作(如对图像进行旋转、扭曲、拉如不慎侵犯了你的权益,请联系我们告知!如不慎侵犯了你的权益,请联系我们告知!果只从留下的片段数据,仍能恢复隐藏信号,而且恢复过程不需要宿主信号,这就是所谓的自恢复性。信息隐藏学是一门新兴的交叉学科,在计算机、通讯、保密学等领域有着广阔的应用前景。数字水印技术作为其在多媒体领域的重要应用,已受7.可纠错性为了保证隐藏信息的完整性,使其在经过各种操作和变换后仍能很,通常采取纠错编码方法[18][19][21]。2.2.5信息隐藏的关键技术信息隐藏技术的关键在于如何处理签字信号的鲁棒性、不可感知性、以及所嵌:1.对于主信号所发生的部分失真,签字信号是否有一定的鲁棒性。2.对于有意或无意的窃取、干扰或去除操作,签字信号是否具有一定的抵抗能力,从而保证隐藏信息的完整性和安全可靠。3.签字信号的嵌入是否严重降低了主信号的感知效果。4.数据嵌入量大小。对于某一特定的信息隐藏算法,他不可能在上述衡量准则下各方面同时达到最优。显然嵌入的数据量越大,签字信号对原始主信号感知效果的影响也越大;而签字信号的鲁棒性越好其,不可感知性就会越低。由于信息隐藏的应用领域十分广泛,不同的应用背景对其技术要求也不尽相同。实际应用中应综合考虑应用背景和隐藏效果选择最合适的信息隐藏算法。2.3数字图像人们在日常生活中通过感觉器官接收到的各种信息中,最主要的是视觉信息,在数字化生活中,数字图像成为人们所感知的最主要的信息形式。基于数字图像的信息隐藏有较大的信息容量,因此数字图像是信息隐藏技术主要的载体之一。本设计信息隐藏的载体也是数字图像,为更清楚地说明本设计的原理,有必要如不慎侵犯了你的权益,请联系我们告知!2.3.1数字图像基本概念数字图像,又称数码图像或数位图像,是二维图像用有限数字数值像素的表示。数字图像是由模拟图像数字化得到的、以像素为基本元素的、可以用数字计算机或数字电路存储和处理的图像。Pixel像数字化时对连续空间进行离散化得到的。每个像素具有整数行(高)和列(宽)位置坐2.3.2文件结构点如下:每个文件只能非压缩的存放一幅彩色图像文;件头由54个字节的数据段组如不慎侵犯了你的权益,请联系我们告知!结构。如不慎侵犯了你的权益,请联系我们告知!:typedefstructtagBITMAPFILEHEADER{UNITbfType;DWORDbfSize;UNITbfReserved1;UNITbfReserved2;DWORDbfOffBits;}BITMAPFILEHEADER;bfType,其值始终为“BM”。bfSize:指定文件大小(以字节为单位)。随后的标头称为信息标头,其中包含图形本身的属性。下面说明如何指定Window3.0或(更高版本)设备独立位图DIB的大小和颜色格式:TypedefstructtagBITMAPINFOHEADER{DWORDbiSize;LONGbiWidth;LONGbiHeight;WORDbiPlanes;WORDbiBitCount;如不慎侵犯了你的权益,请联系我们告知!DWORDbiCompression;DWORDbiSizeImage;LONGbiXPelsPerMeter;LONGbiYPelsPerMeter;DWORDbiClrUsed;DWORDbiClrImportant;}BITMAPINFOHEADER高度值是一个负数时(正向图像),图像将不能被压缩(也就是说biCompression如不慎侵犯了你的权益,请联系我们告知!对于用到调色板的位图,图像数据就是该像素颜在调色板中的索引值。对于真2.4基于彩色静止图像的信息隐藏算法基于彩色静止图像的信息隐藏算法[22]是一种最低有效位替换算法。最低有效位替换算法是:在隐写前,先将欲嵌入的秘密信息转换为比特流,然后用这个比特流几乎不可察觉,故载体图像和隐秘图像没有明显差别。基于彩色静止图像的信息隐1.基于彩色静止图像的信息隐藏嵌入算法(2)将签字信号转化为二进制数据码流;入最低位;如不慎侵犯了你的权益,请联系我们告知!色静止数字图像的信息隐藏嵌入过程L(3)重复第(2)步,使每8个BMP文件图像数据部分字节经过运算后组成一(4)重复(2)、(3)直到隐藏信息字节长度为L。如图2-3所示:基于彩色静止数字图像的信息隐藏提取过程XXS如不慎侵犯了你的权益,请联系我们告知!(1)由于原始24位BMP图像文件隐藏信息后,其数据部分字节数值最多变化RGB嵌入信息的容量与所选取的掩护图像2.5本章小结本章主要阐述信息隐藏的基本原理和数字图像的文件格式以及基于彩色静止图像的信息隐藏算法,可以看到基于彩色静止图像的信息隐藏算法具有容量大、隐藏率高和不可察觉的特点,符合信息隐藏技术的要求且算法简单易于实现,论文将采用此算法来实现信息隐藏。如不慎侵犯了你的权益,请联系我们告知!第3章信息隐藏软件设计与实现3.1引言本章将依据信息隐藏原理,采用基于彩色静止图像信息隐藏算法来完成软件的需求分析、设计和编码实现。其中编码实现以是C++语言作为开发语言,isualStudio200为8开发工具完成的。3.2需求分析3.2.1任务概述设计要求通过对24位BMP位图文件的空域研究,运用前文提出的基于彩色静止P像没有可察觉的变化,且图片属性各项不变,还要实现秘密信息恢复。为满足信息隐藏的安全特性,需对软件的使用权限进行限制。3.2.2需求描述软件主体模块包括信息嵌入模块和信息提取模块;功能模块有载体文件的正确选择,待隐藏文件的正确选择,隐秘图像的保存,隐秘图像的选择,提取文件的保存。打开软件时,出现登录对话框,登录出错将不能加载主窗体;对用户而言,仅可以选择非空的BMP位图文件作为载体图像;选择待隐藏文件时,各类型文件均可选取。若所选文件超出载体隐藏容量,软件会提示待隐藏文件过大。隐藏成功后,将显示隐藏前后图像对比;图像显示,图像能按原始大小也能适应窗口。根据算法、载体图像和秘密信息、隐秘图像之间的数据联系建立数据流图模型如不慎侵犯了你的权益,请联系我们告知!新文件标头隐秘图像文件标头节长度度如不慎侵犯了你的权益,请联系我们告知!如不慎侵犯了你的权益,请联系我们告知!3.3软件设计根据各模块之间的联系,完成了体系结构设计。然后根据各模块功能,完成详细设计。依托主窗体将各模块联系起来,完成整个软件的编码实现。3.3.1软件结构设计图像显示模块、信息嵌入模块、信息提取模块和用户登录模块。根据模块之间的联系建立软件结构图,如-3所示:信信息隐藏和恢复信息嵌入文件保存加载待隐藏文件加载位图图像信息提取文件加载图像显示3.3.2详细设计1.信息隐藏流程不同颜色值的像素点组合在一起就可以构成一张图片,在对图片文件进行操作时就是以像素点为基本单位进行操作,将信息隐藏在像素点中,像素点8是位由二进制值组成,只要将信息隐藏到二进制中就可以,本设计采用最低有效位替换法,将像素值高7位依次异或再与秘密信息二进制数据流异或后写入最低位。如不慎侵犯了你的权益,请联系我们告知!(1)打开载体图片文件;(2)将秘密信息字节长度写入文件标头保留字节;(3)提取每个像素点的信息值,各字节高7位异或;(4)高7位异或结果与秘密信息二进制数据流异或;(5)异或结果写入最低位,保存隐秘图像;如不慎侵犯了你的权益,请联系我们告知!打开隐藏文件秘密信息长度是否超过图像容量N写入最低位二进制数据流结Y保存隐秘图像YN提示待隐藏文件过大如不慎侵犯了你的权益,请联系我们告知!(1)提取过程是信息隐藏的逆过程,具体步骤如下:(2)打开所要提取隐藏信息的图片文件;(3)读文件标头保留字节值L,判断有无隐藏信息;(4)图像数据每个字节8位依次异或,并保存其结果;(5)每8个图像数据部分字节经运算后组成一个隐藏信息字节;(6)重复3、4步直到隐藏信息字节长为L;NYYN如不慎侵犯了你的权益,请联系我们告知!打开软件时弹出登录对话框,输入正确的用户名和密码显示主窗体,否则关闭N用户名密码Y3.4程序实现1.文件载入模块该模块实现文件的待隐藏文件和图像文件的打开路径选择,文件选择,文件加载。包含位图文件载入和嵌入文件载入两部分,主要函数代码如下:(1)嵌入文件载入主要代码:CFilecf;if(!cf.Open(pszFilename,CFile::modeRead))return(FALSE);DWORDdwFileSize;dwFileSize=cf.GetLength();//获取文件字节长度embfile_size=dwFileSize;unsignedchar*pFile;pFile=newunsignedchar[dwFileSize];如不慎侵犯了你的权益,请联系我们告知!cf.Read(pFile,dwFileSize);//将文件中内容读入数组,解下来就开始嵌入操作m_pFile=pFile;q=pFile;//记录下位置returntrue;(2)位图载入函数if(m_pDib!=NULL)deletem_pDib;if(BFH.bfReserved1!=0)//含有隐藏信息,保存其大小{if(BFH.bfReserved2==0)embfile_size=BFH.bfReserved1;embfile_size=BFH.bfReserved1+65535;}if(m_nPaletteEntries!=0){LOGPALETTE*pLogPal=(LOGPALETTE*)newcharofLOGPALETTEm_nPaletteEntries*sizeof(PALETTEENTRY)];if(pLogPal!=NULL){pLogPal->palVersion=0x300;pLogPal->palNumEntries=m_nPaletteEntries;for(inti=0;i<m_nPaletteEntries;i++){pLogPal->palPalEntry[i].peRed=如不慎侵犯了你的权益,请联系我们告知!m_pPalette[i].rgbRed;pLogPal->palPalEntry[i].peGreen=m_pPalette[i].rgbGreen;pLogPal->palPalEntry[i].peBlue=m_pPalette[i].rgbBlue;}m_Palette.CreatePalette(pLogPal);delete[]pLogPal;}}m_BitCount=24;p=m_pDibBits;//指向位图数据的指针,用来执行处理操作用bitmap_size=m_dwDibSize-(m_pDibBits-m_pDib);//真正的位图数据大小(即除头tag=BFH.bfReserved1;return(TRUE);}(1)位图保存代码如下:BOOLCBMPHider::Save(constchar*pszFilename)//保存含有隐藏信息的bmp{if(m_pDib==NULL)return(FALSE);CFilecf;if(!cf.Open(pszFilename,CFile::modeCreate|CFile::modeWrite))return(FALSE);如不慎侵犯了你的权益,请联系我们告知!{BITMAPFILEHEADERBFH;memset(&BFH,0,sizeof(BITMAPFILEHEADER));BFH.bfType='MB';BFH.bfSize=sizeof(BITMAPFILEHEADER)+m_dwDibSize;BFH.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+m_nPaletteEntries*sizeof(RGBQUAD);if(embfile_size<=65535)(2)隐藏文件保存voidCBMPHider::SavePicked(constchar*pszFilename){CFilecf;cf.Open(pszFilename,CFile::modeCreate|CFile::modeWrite);cf.Write(m_pFile,embfile_size);}(1)位图绘制{if(m_pDib==NULL)return(FALSE);longvWidth=m_pBIH->biWidth;if(nWidth==-1)nWidth=m_pBIH->biWidth;if(nHeight==-1)nHeight=m_pBIH->biHeight;如不慎侵犯了你的权益,请联系我们告知!if(Style){StretchDIBits(pDC->m_hDC,nX,nY,nWidth,nHeight,0,0,m_pBIH->biWidth,m_pBIH->biHeight,m_pDibBits,ITMAPINFOmpBIHBI_RGB,SRCCOPY);}{SetDIBitsToDevice(pDC->m_hDC,nX,nY,m_pBIH->biWidth,m_pBIH->biHeight,0,0,0,m_pBIH->biHeight,m_pDibBits,ITMAPINFOmpBIHBI_RGB);}return(TRUE);}(2)对比显示代码if(m_pOldDibShow==NULL)returnFALSE;if(rect_width>=2*m_pBIH->biWidth+30&&rect_height>=m_pBIH->biHeight){StretchDIBits(pDC->m_hDC,0,0,m_pBIH->biWidth,m_pBIH->biHeight,0,0,m_pBIH->biWidth,m_pBIH->biHeight,如不慎侵犯了你的权益,请联系我们告知!m_pOldDibShow,ITMAPINFOmpBIHBI_RGB,SRCCOPY);//原图StretchDIBits(pDC->m_hDC,m_pBIH->biWidth+30,0,m_pBIH->biWidth,m_pBIH->biHeight,0,0,m_pBIH->biWidth,m_pBIH->biHeight,m_pDibBits,ITMAPINFOmpBIHBI_RGB,SRCCOPY);//嵌入隐藏信息的图}{intscale_i=m_pBIH->biWidth*5/(rect_width*2);intscale_j=m_pBIH->biHeight/rect_height;if(scale_i<scale_j)scale_i=scale_j;StretchDIBits(pDC->m_hDC,0,0,m_pBIH->biWidth/scale_i,m_pBIH->biHeight/scale_i,0,0,m_pBIH->biWidth,m_pBIH->biHeight,m_pOldDibShow,ITMAPINFOmpBIHBI_RGB,SRCCOPY);//原图StretchDIBits(pDC->m_hDC,m_pBIH->biWidth/scale_i+30,0,m_pBIH->biWidth/scale_i,m_pBIH->biHeight/scale_i,0,0,m_pBIH->biWidth,m_pBIH->biHeight,m_pDibBits,ITMAPINFOmpBIHBI_RGB,SRCCOPY);//嵌入隐藏信息的图}如不慎侵犯了你的权益,请联系我们告知!returnTRUE;}unsignedcharbmdata;//bitmapdataunsignedcharefdata;//embeddedfiledataintt=7;ints;intlast_bit;//记录字节最低位本来的bitfor(UINTi1=0,i2=0;i1<=bitmap_size-1,i2<=embfile_size-1;i1++){bmdata=*p;ntjjjbit{x[j]=bmdata&1;bmdata>>=1;}last_bit=x[0];x[0]=x[1]^x[2]^x[3]^x[4]^x[5]^x[6]^x[7];if(t==7)//宿主图片每走过八个字节,计算一次s[]{efdata=*q;for(j=0;j<=7;j++){s[j]=efdata&1;efdata>>=1;}}如不慎侵犯了你的权益,请联系我们告知!x[0]^=s[t];//隐藏信息if(last_bit==0)//嵌入隐藏信息{*p|=x[0];}{*p&=254+x[0];}p++;ifts{t7;}}m_pFile=newunsignedchar[embfile_size];unsignedchar*q=m_pFile;unsignedcharbmdata;//bitmapdataints;intt=7;for(UINTi1=0,i2=0;i1<=bitmap_size-1,i2<=embfile_size-1;i1++){bmdata=*p;如不慎侵犯了你的权益,请联系我们告知!{x[j]=bmdata&1;bmdata>>=1;}s[t]=x[0]^x[1]^x[2]^x[3]^x[4]^x[5]^x[6]^x[7];ifts到s[0]组成一个字节{*q=s[7]*128+s[6]*64+s[5]*32+s[4]*16+s[3]*8+s[2]*4+s[1]*2+s[0];t=7;}p++;}}该模块要在打开主窗体时弹出,要实现此,需在主窗体框架创建函数CDlg_logindlg;//生成一个登录对话框对象dlg.DoModal();//让对话框对象以有模式形式显示出来UpdateData();if(m_login_name=="user"&&m_login_pwd=="test1234"){MessageBox("用户验证通过","登录提示",MB_OK);如不慎侵犯了你的权益,请联系我们告知!}e{MessageBox("用户验证失败","登录提示",MB_OK);AfxGetMainWnd()->PostMessage(WM_QUIT);EndDialog(IDCANCEL);}CDialog::OnOK();}}3.5本章小结本章完成了对信息隐藏软件的需求分析,根据设计要求和软件功能明确了设计任务,建立了软件逻辑模型。信息隐藏软件的设计过程中,将软件划分为文件加载模块、文件保存模块、图像显示模块、信息嵌入模块、信息提取模块和用户登录模块。根据模块之间的联系建立软件结构图,完成了体系结构设计。阐述了软件各模块的详细设计过程。并完成了各模块的编码,实现了软件信息隐藏的功能。如不慎侵犯了你的权益,请联系我们告知!4.1引言经过前两章的工作,信息隐藏软件的设计和实现工作已全部完成。本章将结合前面的设计来介绍整个系统的调试过程;在此之后,会对软件信息隐藏效果作一定测试,并对测试结果进行讨论和分析。4.2软件运行调试(1)软件运行为验证软件效果和稳定性,选取不同的载体图像和不同类型的隐藏文件作了试软件运行后,界面比较简单但主要功能一目了然,如4-图1所示。按照信息隐图像显示在窗体内。点击“信息隐藏”按钮,弹出隐藏文件选择对话框,本例选“Wtest.doc”作为隐藏文件,如图4-1所示:名后如不慎侵犯了你的权益,请联系我们告知!4.3测试与分析1.隐藏文件类型测试论文设计了针对不同类型隐藏信息的测试用例,现将测试结果列表如下:如不慎侵犯了你的权益,请联系我们告知!如不慎侵犯了你的权益,请联系我们告知!是整是是是f是否g是是f是是f是是e是否是是是否是否秘图像,从图上我们不能看出隐藏信息前后图像的变化,表明隐藏过程没有引起图如不慎侵犯了你的权益,请联系我们告知!比如不慎侵犯了你的权益,请联系我们告知!(3)信息隐藏率测试如不慎侵犯了你的权益,请联系我们告知!表4-2信息隐藏率(待续)率——率(4)鲁棒性测试4.4本章小结如不慎侵犯了你的权益,请联系我们告知!如不慎侵犯了你的权益,请联系我们告知!结论与展望随着信息安全问题日益突出原,有的加密技术已不能满足增长的信息安全需求,信息隐藏技术是隐藏信息的存在性,使他人不能察觉,同时也有加密,比单纯的信息加密技术更加安全。信息隐藏技术为解决信息安全问题提供了新的方法,其本身也得到很快的发展,信息隐藏技术中的数字水印技术已广泛应用于版权保护,而密写技术则要发展得慢一些。事实上,密写技术在信息的安全传输方面有着巨大的潜为此,论文探讨并设计了一种基于改进的最低有效位法(文中称为基于彩色静止数字图像的信息隐藏算法)的软件,实现了文本文档的隐藏和正确恢复。主要完成的工作如下:1.软件需求分析根据软件需要实现的功能,明确了软件设计的需求。划分软件功能模块,建立了软件逻辑模型。2.软件的设计和实现根据需求分析,得到各模块之间的联系,据此完成了体系结构设计。然后根据各模块功能,详细设计了实现方法和步骤。依据算法,主要设计了信息隐藏和提取过程的实现。还实现了文件的加载和保存、图像显示和安全登录模块。依托主窗体将各模块联系起来,完成了整个软件的编码实现。3.软件调试和测试论文设计了多组测试用例对软件进行测试。测试了软件对部分常用类型文件的隐藏能力、信息隐藏对图像的影响是否可察觉、信息隐藏率以及鲁棒性测试。从测试结果来看,软件能正确的完成文本文档的隐藏和恢,能隐藏和恢复word文档、t如不慎侵犯了你的权益,请联系我们告知!,若隐秘图像像素发生变化,将不能恢复隐藏信息。因此下一步工作,可针对不同的载体文件类型增加算法,丰富载体类型,改进算法,增能力。完善隐藏文件载入功如不慎侵犯了你的权益,请联系我们告知!能,在载入时应该识别文件类型并在隐秘图像上标记,以便提取信息时读取文技术的展望信息隐藏技术快速发展,是信息安全领域的新方向,且已成为信息安全领域的重要技术。信息隐藏技术在保密通信、版权保护和隐私保护等领域具有重要应用价值。信息隐藏技术的发展将为信息安全作出重要贡献,也将对人们的生产、生活产如不慎侵犯了你的权益,请联系我们告知!致谢在此特别要向我的指导老师李德智老师致以最诚挚的感谢,论文选题结束后,李老师就很快联系到我,对我的毕业设计进行指导,解答我的疑惑。从开题答辩到中期答辩到最后完成论文以及平时的工作中,李老师给了我极大的帮助。李老师对学生十分负责和关心,每个星期不论有多忙都会抽出时间给我指导,每次指导老师都是早早就到,对我悉心指导。我的疑问,他总是耐心的讲解,帮助我解决遇到的指导和谆谆教诲是我完成毕业设计的基础,同时老师严谨求实的朋友,还有所有帮助过我的同学。谢谢你们多年来对我的关心如不慎侵犯了你的权益,请联系我们告知!参考文献Emre,Unkar,Ersin.Sankur,Bulent,Ozsoy,A.Sumru;Gungor,Tunga.Signal[6]陆萍,董虎胜,马小虎.基于混合域的自适应扩频肓鲁棒水印算法.计算机工程与设计.2010,10munications[8]李蓓,金聪.基于混沌序列和奇异值分解的鲁棒数字水印算法.计算机应用.2005,1[9]马秀芳,时和平,时晨.扩频通信技术在图像信息隐藏领域中的应用.电信快报[10]王艳,李秀滢.基于小波变换的信息隐藏技术的改进.信息安全与通信保密.2012,2:48-50子学报.2004,10sIEEE,TransactionsonImageProcessing.2003,12(2):221-228[14]WestfeldA,PfitzmannA.Attacksonsteganographiesystems.In:Proeeeding如不慎侵犯了你的权益,请联系我们告知!of3ndinternationalWbrkshoP.Dresden,1999,61-76如不慎侵犯了你的权益,请联系我们告知![15]ChandramouliR,MemonN.AnalysisofLSBBaseImageStenographyreeceThessalonikiImages.IEEETransactionsonImageProcessing,2001,10(8)[21]巩晓婷.基于文本的信息隐藏技术研究.福州大学硕士论文.2006,1-7LSB字图像信息隐藏算法.计算机科学.2008,35()1[28]李艳玲等.基于图像变换域的信息隐藏技术.华北水利水电学院学报.2005,26[31]ChiKwongChan,L.M.Cheng.HidingdatainimagebysimpleLSBSociety,37如不慎侵犯了你的权益,请联系我们告知!添加类CBMPHider的成员函数和成员变量classCBMPHider{public:CBMPHider(void);virtual~CBMPHider(void);public:intm_BitCount;//位图的图像位数WORD*m_pWordData;CPalettem_Palette;unsignedchar*m_pDib,*m_pDibBits;unsignedchar*m_pOldDibShow;DWORDm_dwDibSize;BITMAPINFOHEADER*m_pBIH;RGBQUAD*m_pPalette;intm_nPaletteEntries;UINTbitmap_size;UINTembfile_size;unsignedchar*p;有unsignedchar*q;//指向宿主图像数据//指向隐藏文件数据unsignedchar*m_pFile;public:intStyle=1);BOOLSave(constchar*pszFilename);BOOLLoad(constchar*);voidBackUpDib();voidPick();voidEmbed();BOOLLoadEmbFile(const//备份图像//提取图像//嵌入图像char*);BOOLDrawContrast(CDC*pDC,intrect_width,intrect_height);voidSavePicked(constchar*pszFilename);BOOLCBMPHider::Load(constchar*pszFilename){CFilecf;如不慎侵犯了你的权益,请联系我们告知!if(!cf.Open(pszFilename,CFile::modeRead))return(FALSE);DWORDdwDibSize;dwDibSize=cf.GetLength()-sizeof(BITMAPFILEHEADER);unsignedchar*pDib;pDib=newunsignedchar[dwDibSize];if(pDib==NULL)return(FALSE);BITMAPFILEHEADERBFH;{if(cf.Read(&BFH,sizeof(BITMAPFILEHEADER))!=sizeof(BITMAPFILEHEADER)||BFH.bfType!='MB'||cf.Read(pDib,dwDibSize)!=dwDibSize){delete[]pDib;return(FALSE);}}catch(CFileException*e){e->Delete();delete[]pDib;return(FALSE);}cf.Close();if(m_pDib!=NULL)deletem_pDib;if(BFH.bfReserved1!=0)//含有隐藏信息,保存其大小{if(BFH.bfReserved2==0)embfile_size=BFH.bfReserved1;embfile_size=BFH.bfReserved1+65535;}m_pDib=pDib;m_dwDibSize=dwDibSize;m_pBIH=(BITMAPINFOHEADER*)m_pDib;m_pPalette=(RGBQUAD*)&m_pDib[sizeof(BITMAPINFOHEADER)];m_nPaletteEntries=1<<m_pBIH->biBitCount;if(m_pBIH->biBitCount>8)m_nPaletteEntries=0;如不慎侵犯了你的权益,请联系我们告知!elseif(m_pBIH->biClrUsed!=0)m_nPaletteEntries=m_pBIH->biClrUsed;m_pDibBits=&m_pDib[sizeof(BITMAPINFOHEADER)+m_nPaletteEntries*sizeof(RGBQUAD)];if(m_Palette.GetSafeHandle()!=NULL)m_Palette.DeleteObject();if(m_nPaletteEntries!=0){LOGPALETTE*pLogPal=(LOGPALETTE*)newcharofLOGPALETTEm_nPaletteEntries*sizeof(PALETTEENTRY)];if(pLogPal!=NULL){pLogPal->palVersion=0x300;pLogPal->palNumEntries=m_nPaletteEntries;for(inti=0;i<m_nPaletteEntries;i++){pLogPal->palPalEntry[i].peRed=m_pPalette[i].rgbRed;pLogPal->palPalEntry[i].peGreen=m_pPalette[i].rgbGreen;pLogPal->palPalEntry[i].peBlue=m_pPalette[i].rgbBlue;}m_Palette.CreatePalette(pLogPal);delete[]pLogPal;}}m_BitCount=24;//24位位图p=m_pDibBits;//指向位图数据的指针,用来执行处理操作用bitmap_size=m_dwDibSize-(m_pDibBits-m_pDib);//真正的位图数据的大小(即除tag=BFH.bfReserved1;return(TRUE);}位图保存BOOLCBMPHider::Save(constchar*pszFilename)//保存含有隐藏信息的bmp{if(m_pDib==NULL)return(FALSE);CFilecf;if(!cf.Open(pszFilename,如不慎侵犯了你的权益,请联系我们告知!CFile::modeCreate|CFile::modeWrite))return(FALSE);{BITMAPFILEHEADERBFH;memset(&BFH,0,sizeof(BITMAPFILEHEADER));BFH.bfType='MB';BFH.bfSize=sizeof(BITMAPFILEHEADER)+m_dwDibSize;BFH.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+m_nPaletteEntries*sizeof(RGBQUAD);if(embfile_size<=65535)hortBFH.bfReserved1=embfile_size;{BFH.bfReserved1=embfile_size-65535;BFH.bfReserved2=1;//标记}cf.Write(&BFH,sizeof(BITMAPFILEHEADER));cf.Write(m_pDib,m_dwDibSize);}catch(CFileException*e){e->Delete();return(FALSE);}return(TRUE);}nYintnWidthintnHeightintStyle{if(m_pDib==NULL)return(FALSE);longvWidth=m_pBIH->biWidth;if(nWidth==-1)nWidth=m_pBIH->biWidth;if(nHeight==-1)nHeight=m_pBIH->biHeight;if(Style){StretchDIBits(pDC->m_hDC,nX,nY,nWidth,nHeight,如不慎侵犯了你的权益,请联系我们告知!0,0,m_pBIH->biWidth,m_pBIH->biHeight,m_pDibBits,ITMAPINFOmpBIHBI_RGB,SRCCOPY);}{SetDIBitsToDevice(pDC->m_hDC,nX,nY,m_pBIH->biWidth,m_pBIH->biHeight,0,0,0,m_pBIH->biHeight,m_pDibBits,ITMAPINFOmpBIHBI_RGB);}return(TRUE);}嵌入文件载入BOOLCBMPHider::LoadEmbFile(constchar*pszFilename){CFilecf;if(!cf.Open(pszFilename,CFile::modeRead))return(FALSE);DWORDdwFileSize;dwFileSize=cf.GetLength();embfile_size=dwFileSize;unsignedchar*pFile;pFile=newunsignedchar[dwFileSize];cf.Read(pFile,dwFileSize);//将文件中内容读入数组,解下来就开始嵌入操作m_pFile=pFile;q=pFile;//记录下位置returntrue;}信息嵌入voidCBMPHider::Embed()//嵌入{unsignedcharbmdata;//bitmapdataunsignedcharefdata;//embeddedfiledataintt=7;ints;intlastbit字节最低位本来的bit如不慎侵犯了你的权益,请联系我们告知!for(UINTi1=0,i2=0;i1<=bitmap_size-1,i2<=embfile_size-1;i1++)如不慎侵犯了你的权益,请联系我们告知!{bmdata=*p;{x[j]=bmdata&1;bmdata>>=1;}last_bit=x[0];x[0]=x[1]^x[2]^x[3]^x[4]^x[5]^x[6]^x[7];if(t==7)//宿主图片每走过八个字节,计算一次s[]{efdata=*q;for(intj=0;j<=7;j++)//此处歹意原为for(j=0;j<=7;j++),错{s[j]=efdata&1;efdata>>=1;}}x[0]^=s[t];//隐藏信息if(last_bit==0)//嵌入隐藏信息{*p|=x[0];}{*p&=254+x[0];}p++;ifts{t7;}}}信息提取voidCBMPHider::Pick()//提取{m_pFile=newunsignedchar[embfile_size];unsignedchar*q=m_pFile;如不慎侵犯了你的权益,请联系我们告知!unsignedcharbmdata;//bitmapdataints;intt=7;for(UINTi1=0,i2=0;i1<=bitmap_size-1,i2<=embfile_size-1;i1++){bmdata=*p;{x[j]=bmdata&1;bmdata>>=1;}s[t]=x[0]^x[1]^x[2]^x[3]^x[4]^x[5]^x[6]^x[7];ifts到s[0]组成一个字节{*q=s[7]*128+s[6]*64+s[5]*32+s[4]*16+s[3]*8+s[2]*4+s[1]*2+s[0];t=7;}p++;}}提取出文件保存voidCBMPHider::SavePicked(constchar*pszFilename){CFilecf;cf.Open(pszFilename,CFile::modeCreate|CFile::modeWrite);cf.Write(m_pFile,embfile_size);}voidCBMPHider::BackUpDib(){m_pOldDibShow=newunsignedchar[bitmap_size];::CopyMemory(m_pOldDibShow,m_pDibBits,bitmap_size);//将原始的数据单独保存以便对比显示}隐藏信息前后图像对比显示BOOLCBMPHider::DrawContrast(CDC*pDC,intrect_width,intrect_height){//看原图,如果容纳得下两个图,则不要压缩,否则要压缩if(m_pOldDibShow==NULL)returnFALSE;if(rect_width>=2*m_pBIH->biWidth+30&&rect_height>=m_pBIH->biHeight)如不慎侵犯了你的权益,请联系我们告知!{StretchDIBits(pDC->m_hDC,0,0,m_pBIH->biWidth,m_pBIH->biHeight,0,0,m_pBIH->biWidth,m_pBIH->biHeight,m_pOldDibShow,ITMAPINFOmpBIHBI_RGB,SRCCOPY);//原图StretchDIBits(pDC->m_hDC,m_pBIH->biWidth+30,0,m_pBIH->biWidth,m_pBIH->biHeight,0,0,m_pBIH->biWidth,m_pBIH->biHeight,m_pDibBits,ITMAPINFOmpBIHBI_RGB,SRCCOPY);//嵌入隐藏信息的图}{intscale_i=m_pBIH->biWidth*5/(rect_width*2);intscale_j=m_pBIH->biHeight/rect_height;if(scale_i<scale_j)scale_i=scale_j;StretchDIBits(pDC->m_hDC,0,0,m_pBIH->biWidth/scale_i,m_pBIH->biHeight/scale_i,0,0,m_pBIH->biWidth,m_pBIH->biHeight,m_pOldDibShow,ITMAPINFOmpBIHBI_RGB,SRCCOPY);//原图StretchDIBits(pDC->m_hDC,m_pBIH->biWidth/scale_i+30,0,m_pBIH->biWidth/scale_i,m_pBIH->biHeight/scale_i,0,0,m_pBIH->biWidth,m_pBIH->biHeight,m_pDibBits,ITMAPINFOmpBIHBI_RGB,SRCCOPY);//嵌入隐藏信息的图}returnTRUE;}CttView::CttView(){ImageStyle=0;have_open_a_f

温馨提示

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

最新文档

评论

0/150

提交评论