




免费预览已结束,剩余23页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息加密与隐藏工具的设计与实现(有源程序代码) 源程序代码等全套设计联系 174320523 各专业都有分类号:TP309.2 U D C:D10621-408-20075776-0密 级:公 开编 号:2003032028成都信息工程学院学位论文信息加密与隐藏工具的设计与实现论文作者姓名:张磊申请学位专业:网络工程申请学位类别:工学学士指导教师姓名(职称):韩斌(副教授)论文提交日期:2007年06月10日信息加密与隐藏工具的设计与实现摘 要 当今时代,随着电脑的普及应用和互联网的快速发展,网络中露出的安全问题引起普遍关注,网络的安全,主要是网络信息安全,需要采取相应的保护措施,提供适合的安全服务,加密机制和信息隐藏技术作为保障网络信息安全的手段,可以保证信息的完整性、可鉴别性和不可否认性。在一些应用中,它只需要让指定接受人来验证,以确保信息的秘密性。本文主要研究了信息加密与隐藏技术,介绍信息安全的应用前景,通过掌握的知识来实现一个简单信息加密与隐藏工具,包含加密和信息隐藏的功能,处理的对象主要是针对文本和图片两种文件格式,使用简单的对称加密算法对文本进行加密,而在图片中隐藏另外一张图片信息。该设计旨在理解信息加密与隐藏技术在实际生活中的应用,从总体上阐述了它们的原理。另外,本设计成果可用于教学实验中。 关键词:安全;加密;信息;隐藏 The Design and Implementation of an Information Encryption and Hiding ToolAbstract In modern times, with the universal application of computers and rapid development of the Internet, more people have paid attention to the security issues in the Internet. The security issues mainly refer to network information security, so it needs some protection measures and provides appropriate security services. As the protection measures of information security, the encryption and information hiding technology provides the functions of integration, authentication, and non-repudiation for the signing message. In some applications, it only needs to be verified by some recipients while keeping the message secret from public. This paper mainly researches the information encryption and hiding technology and introduces the application prospects of the information security. Based on the acquired knowledge, a simple information encryption and hiding tool is designed, and it provides the functions of encryption and information hiding, and the handing object refers to the text and picture. The symmetric encryption algorithm is applied into the text encryption while a picture is hidden in another picture. The purpose of this design is to make the application of information encryption and hiding in real life understood, as well as to describe the principles of the technology on the whole. In addition, the designing result can be applied into the teaching and experiments. Key words: security; encryption; information; hiding目 录论文总页数:23页1引言11.1课题背景11.2本课题研究意义12信息隐藏技术12.1信息隐藏简介12.2信息隐藏技术的分类22.3信息隐藏关键技术32.4信息隐藏的应用领域33加解密相关技术43.1密码学知识4 3.1.1密钥和算法4 3.1.2对称密钥算法4 3.1.3非对称密钥算法54实现一个信息加密与隐藏工具64.1设计思路6 4.1.1界面设计思路6 4.1.2信息加密设计思路6 4.1.3信息隐藏设计思路64.2设计流程6 4.2.1信息加密流程6 4.2.2信息隐藏流程7 4.2.3信息解密流程7 4.2.4隐藏信息提取流程74.3设计前言8 4.3.1设计工具8 4.3.2已有设计条件8 4.3.3设计目的84.4信息加密与隐藏设计过程分析8 4.4.1信息加密8 4.4.2信息隐藏114.5解密与隐藏信息提取设计过程分析15 4.5.1文本信息的解密15 4.5.2隐藏信息的提取164.6实例运行与测试18 4.6.1信息加密与隐藏过程18 4.6.2解密与隐藏信息提取过程19结 论21参考文献21致 谢22声 明23引言 课题背景 当今时代,随着电脑的普及应用和互联网的快速发展,网络已经融入人们的生活之中,网络中露出的安全问题引起普遍关注,网络的开放性与共享性也导致了网络的安全性受到严重影响,在开放的Internet平台上,社会生活中传统的犯罪和不道德行为将变得更加隐蔽和难以控制。人们从面对面的交易和作业,变成网上互不见面的操作、没有国界、没有时间限制,就产生了更大的安全隐患。如何保证网上传输的数据的安全和对方的身份确认,对网络提出了挑战。 本课题研究意义 加密与信息隐藏技术成为保障网络信息安全的手段。这种机制可以保证信息传输的保密性、数据交换的完整性,发送信息的不可否认性,身份的确定性。随着网络技术和软件技术的飞速发展,信息革命带来了全球范围市场竞争的日益加剧,同时对传统的办公和生活方式也产生了巨大冲击。在计算机通信系统中,维护电子文档的安全成为至关重要和非常敏感的问题,保证重要信息在传输过程中的安全性在电子商务、电子政务等领域发挥着越来越大的作用。信息隐藏与信息加密是不尽相同的,信息加密是隐藏信息的内容,而信息隐藏是隐藏信息的存在性,信息隐藏比信息加密更为安全,因为它不容易引起攻击者的注意。本文主要介绍信息加密与隐藏的实现。信息隐藏技术 信息隐藏简介 信息隐藏(Information Hiding),也称作数据隐藏(Data Hiding)。简单来讲,信息隐藏是指将某一信号(一般称之为签字信号,Signature Signal)嵌入(embedding)另一信号(一般称之为主信号,Host Signal,或称之为掩护媒体,cover-media)的过程,掩护媒体经嵌入信息后变成一个伪装媒体(stegano-media)。这一嵌入过程需要满足下列条件: 1.签字信号的不可感知性(Imperceptibility)。换句话讲,签字信号嵌入后,主信号的感知特性没有明显的改变,签字信号被主信号“隐藏”了起来。 2.签字信号的鲁棒性(Robustness)。签字信号对主信号的各种失真变换,如失真信号压缩、仿射变换、加噪、A/D或D/A转换等,以及各种恶意性攻击(Malicious Attack),都应体现出一定的鲁棒性。除非主信号的感知特性被明显的破坏,签字信号将很难被去除。 3.一般来讲,签字信号的嵌入不增加主信号的存储空间和传输带宽。也就是说,签字信号嵌入后,“表面”上很难觉察到信息的改变。 信息隐藏的发展历史可以一直追溯到“匿形术(Steganography)”的使用。“匿形术”一词来源于古希腊文中“隐藏的”和“图形”两个词语的组合。虽然“匿形术”与“密码术(Cryptography)”都是致力于信息的保密技术,但是,两者的设计思想却完全不同。“密码术”主要通过设计加密技术,使保密信息不可读,但是对于非授权者来讲,虽然他无法获知保密信息的具体内容,却能意识到保密信息的存在。而“匿形术”则致力于通过设计精妙的方法,使得非授权者根本无从得知保密信息的存在与否。相对于现代密码学来讲,信息隐藏的最大优势在于它并不限制对主信号的存取和访问,而是致力于签字信号的安全保密性。 信息隐藏技术的分类 根据应用背景的不同,信息隐藏技术大致可分为三类: 1.版权保护(Copyright Protection) 到目前为止,信息隐藏技术的绝大部分研究成果都是在这一应用领域中取得的。信息隐藏技术在应用于版权保护时,所嵌入的签字信号通常被称作“数字水印(Digital Watermark)”。版权保护所需嵌入的数据量最小,但对签字信号的安全性和鲁棒性要求也最高,甚至是十分苛刻的。为明确起见,应用于版权保护的信息隐藏技术一般称作“鲁棒型水印技术”,而所嵌入的签字信号则相应的称作“鲁棒型水印(Robust Watermark)”,从而与下文将要提到的脆弱型水印区别开来。而一般所提到的“数字水印”则多指鲁棒型水印。 2.数据完整性鉴定(Integrity Authentication) 数据完整性鉴定,又称作数据篡改验证(Tamper Proof),是指对某一信号的真伪或完整性的判别,并进一步需要指出该信号与原始真实信号的差别,即提供有关证据指明真实信号可能经历的篡改操作。更形式化的讲,假定接收到一多媒体信号g(图像、音频或视频信号),初步判断它很可能是某一原始真实信号f的修改版本。数据篡改验证的任务就是在对原始信号f的具体内容不可知的情况下,以最大的可能判断是否gf。 3.扩充数据的嵌入(Augmentation Data Embedding) 扩充数据包括对主信号的描述或参考信息、控制信息以及其它媒体信号等等。描述信息可以是特征定位信息、标题或内容注释信息等,而控制信息的嵌入则可实现对主信号的存取控制和监测。例如,一方面针对不同所有权级别的用户,可以分别授予不同的存取权限。另一方面,也可通过嵌入一类通常被称作“时间印章(Time Stamp)”的信息,以跟踪某一特定内容对象的创建、行为以及被修改的历史。这样,利用信息隐藏技术可实现对这一对象历史使用操作信息的记录,而无需在原信号上附加头文件或历史文件,因为使用附加文件,一来容易被改动或丢失,二来需要更多的传输带宽和存储空间。 信息隐藏关键技术 信息隐藏技术的关键在于如何处理签字信号的鲁棒性、不可感知性、以及所嵌入的数据量这三者之间的关系。判断信息隐藏算法优劣的一般衡量准则为: 1.对于主信号发生的部分失真,签字信号是否具备一定的鲁棒性。 2.对于有意或无意的窃取、干扰或去除操作,签字信号是否具备一定的抵抗能力,从而保证隐藏信息的安全可靠和完整性。 3.签字信号的嵌入是否严重降低了主信号的感知效果。 4.数据嵌入量的大小。 对于某一特定的信息隐藏算法来讲,它不可能在上述的衡量准则下同时达到最优。显然,数据的嵌入量越大,签字信号对原始主信号感知效果的影响也会越大;而签字信号的鲁棒性越好,其不可感知性也会就随之降低,反之亦然。由于信息隐藏的应用领域十分宽广,不同的应用背景对其技术要求也不尽相同。 因此,有必要从不同的应用背景出发对信息隐藏技术进行分类,进而分别研究它们的技术需求。 信息隐藏的应用领域 随着信息隐藏技术的发展,它的应用领域也得到了扩展,信息隐藏的基本应用领域是版权保护、隐藏标识、认证和安全不可见通信。 当应用于版权保护时,潜在的应用市场在于电子商务、在线或离线地分发多媒体内容以及大规模的广播服务。信息隐藏用于隐藏标识时,可在医学、制图、数字成像、数字图像监控、多媒体索引和基于内容的检索等领域得到应用。信息隐藏的认证方面主要ID卡、信用卡、ATM卡等上面信息的安全不可见通信将在国防和情报部门得到广泛的应用。 多媒体技术的飞速发展和Internet的普及带来了一系列政治、经济、军事和文化问题,产生了许多新的研究热点,以下几个引起普遍关注的问题构成了信息隐藏的研究背景。 国内目前在证件防伪领域面临巨大的商机,由于缺少有效的措施,使得“造假”、“买假”、“用假”成风,已经严重地干扰了正常的经济秩序,对国家的形象也有不良影响。通过信息隐藏技术可以确认该证件的真伪,使得该证件无法仿制。 数字作品(如电脑美术、扫描图像、数字音乐、视频、三维动画)的版权保护是当前的热点问题。由于数字作品的拷贝、修改非常容易,而且可以做到与原作完全相同,所以原创者不得不采用一些严重损害作品质量的办法来加上版权标志,而这种明显可见的标志很容易被篡改。目前市场上的信息隐藏产品在技术上还不成熟,很容易被破坏或破解,距离真正的实用还有很长的路要走。加解密相关技术 密码学知识 密钥和算法 密码算法也叫密码,是用于加密和解密的数学函数。(通常情况下,有两个相关的函数:一个用作加密,另一个用作解密) 如果算法的保密性是基于保持算法的秘密,这种算法称为受限制的算法。受限制的算法具有历史意义,但按现在的标准,它们的保密性已远远不够。大的或经常变换的用户组织不能使用它们,因为每有一个用户离开这个组织,其它的用户就必须改换另外不同的算法。如果有人无意暴露了这个秘密,所有人都必须改变他们的算法。 现代密码学用密钥解决了这个问题,密钥用K表示。K可以是很多数值里的任意值。密钥K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥(即运算都依赖于密钥,并用K作为下标表示),这样,加解密函数现在变成: EKMC DKCM 这些函数具有下面的特性: DKEKMM 有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下: EK1MC DK2CM DK2EK1MM 所有这些算法的安全性都基于密钥的安全性;而不是基于算法的细节的安全性。这就意味着算法可以公开,也可以被分析,可以大量生产使用算法的产品,即使偷听者知道你的算法也没有关系;如果他不知道你使用的具体密钥,他就不可能阅读你的消息。 总之,密码系统由算法、以及所有可能的明文、密文和密钥组成的。 对称密钥算法 对称算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加解密。只要通信需要保密,密钥就必须保密。 对称算法的加密和解密表示为: EKMC DKCM 对称算法可分为两类。一次只对明文中的单个比特(有时对字节)运算的算法称为序列算法或序列密码。另一类算法是对明文的一组比特亚行运算,这些比特组称为分组,相应的算法称为分组算法或分组密码。 对称加密的缺点在于密钥的管理过于复杂。如果任何一对发送方和接收方都有他们各自商议的密钥的话,那么很明显,假设有N个用户进行对称加密通信,如果按照上述方法,则他们要产生NN-1把密钥,每一个用户要记住或保留N-1把密钥,当N很大时,记住是不可能的,而保留起来又会引起密钥泄漏可能性的增加。常用的对称加密算法有DES,DEA等。 非对称密钥算法 公开密钥算法(也叫非对称算法)是这样设计的:用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来(至少在合理假定的长时间内)。之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。在这些系统中,加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)。私人密钥有时也叫秘密密钥。为了避免与对称算法混淆,此处不用秘密密钥这个名字。 用公开密钥K加密表示为: EKM C 虽然公开密钥和私人密钥是不同的,但用相应的私人密钥解密可表示为: DKCM 有时消息用私人密钥加密而用公开密钥解密,尽管可能产生混淆,但这些运算可分别表示为: EKMC DKCM 当前的公开密码算法的速度,比起对称密码算法,要慢的多,这使得公开密码算法在大数据量的加密中应用有限。 非对称加密的优点在于用户不必记忆大量的提前商定好的密钥,因为发送方和接收方事先根本不必商定密钥,发放方只要可以得到可靠的接收方的公开密钥就可以给他发送信息了,而且即使双方根本互不相识。但为了保证可靠性,非对称加密算法需要一种与之相配合使用的公开密钥管理机制,这种公开密钥管理机制还要解决其他一些公开密钥所带来的问题。常用的非对称加密算法有RSA等。实现一个信息加密与隐藏工具 设计思路 界面设计思路 本设计根据前面理论的分析,从信息加密与隐藏两个主要方面着手,将两大块分开进行独立设计,做成不同的功能界面,每部分功能又都分别包括了对文本文件和图片文件的操作。 为了方便操作与演示,因此在界面设计上不用很复杂,只需要用有限的几个控件来实现不同的功能,通过某个控件选择不同的文件,再通过相应的按钮对所选文件进行不同操作。 信息加密设计思路 在实现对文本文件的加密与解密时,将文件内容固定为非中文字符,即常用的ASCII字符,并采用对称加密算法来实现,算法选择用自己编写的简单的位操作算法,且将密钥固定为已知值。 信息隐藏设计思路 在实现对图片文件的信息隐藏与提取时,采用基于数字水印的技术,图片格式固定为.BMP格式的文件,隐藏的过程就是通过在所选的图片中嵌入其他的图片,并在图片中加入特殊的信息,而验证的过程就是对图片中的特殊信息进行提取,如果包含有特殊信息,则说明已对文件进行信息隐藏,验证成功后将隐藏在载体文件中的图片信息显示出来。 设计流程 信息加密流程 文本文件的内容是由可见ASCII字符组成,每个ASCII字符都有对应的字符值,在对其进行加密时,可采用对称加密算法,对每个字符值进行某一范围内的规律变换,变换后字符显示会与原先的字符不一样,如此循环的对每个字符进行相同操作,就可将明文信息变换成密文信息,最后将密文信息附加到明文信息结尾部分,生成一个新的文本文件,接着再次将整个文本文件进行加密,为的是在信息的传输中,保护信息。 详细的步骤如下: 1.选择所要加密的文本文件; 2.用对称加密算法对文本文件进行加密,生成附加信息;3.将已经生成的附加信息添加到原明文文件后,重新生成一个新的文本文件; 4.再次对新的文本文件进行加密; 5.将整个加密文件保存保存; 信息隐藏流程 本设计中的信息隐藏主要是针对图片文件,即在一张图片中隐藏另外一张图片信息,图片文件的格式为.BMP格式,图片文件的度量单位是由像素点构成,许多不同颜色值的像素点组合在一起就可以构成一张图片,在对图片文件进行操作时就是以像素点为基本单位进行操作,将图片信息隐藏在像素点中,像素点是由8位二进制值组成,只要将信息隐藏到二进制中就可以,最后为了使验证方便,在对前几个像素点的值进行规律变化,而对整张图片的显示无大的影响。 详细的步骤如下: 1.选择所要隐藏的图片文件; 2.提取每个像素点的信息值; 3.获取信息图片的像素点信息值,并将其隐藏的载体图片中; 4.生成新的图片,将前几个像素点进行变换; 5.保存整个图片文件; 信息解密流程 加密后的文本文件是由两部分组成的,一是原明文信息,二是消息摘要,并且两部分组合在一起加密后构成加密文件,在进行解密时,需要将两部现分开,这就先要解密,由于消息摘要的长度和明文信息的长度是相同的,这就便于提取,之后将获取到的明文信息值用相同的加密算法进行加密,加密后的信息于消息摘要进行比较,如果相同,则说明解密成功。 详细的步骤如下: 1.选择所要解密的文本文件; 2.对文件解密,从中提取明文信息和附加信息; 3.对明文信息加密,得到另一附加信息; 4.将两个附加信息进行比较; 5.相同,则说明信息在传输中没有被改变,否则不然; 隐藏信息提取流程 对图片文件的信息提取如同对其进行隐藏一样,只需要涉及到对像素点值的操作,首先要对图片的前几个像素点进行提取,验证其是否按照隐藏时的规律排列,如是,则说明有隐藏信息,接着,将隐藏到载体图片像素点中的信息通过位操作变换出来,使其为显示图片的像素点。 详细步骤如下: 1.选择所要提取隐藏信息的图片文件; 2.提取前几个像素点,验证其是否按照隐藏规律排列; 3.验证成功时,变换图片的每个像素点值; 4.将隐藏的图片信息显示出来; 设计前言 设计工具 本次设计采用的是微软的.NET 2003开发平台,用VB.NET语言进行设计,由于VB.NET是可视化的开发工具,且又是面向对象的语言,对于界面的设计相当方便和上手,而且语言中封装的函数可提供所需的功能作用,使得本次设计在程序结构上清晰而且规范。 已有设计条件 首先对VB.NET有系统的学习过,熟悉其语法规则,了解该程序语言的特点,在平时的学习中,曾经设计过简单的应用软件,具有一定的开发经验,因此,在本次毕业设计中,能够按照规范的软件设计流程,参照已有知识,根据要求设计出符合目标的成果出来。 另外,在设计中,对存在的问题,可在指导老师的指点下,对问题进行分析,并且提出可行的解决方案,及时修改程序的问题,对程序进行测试,尽可能的完善本设计。 设计目的 本文描述了一个信息加密与隐藏工具的设计和实现,先从理论上进行总体阐述,接着对功能的实现进行具体的分析和设计,从安全性的角度来说,本设计成果不适合用于实际生活中,但从教学的角度来考虑,通过课堂上的演示,可使学生更好理解这方面的知识原理,增强教学效果。 信息加密与隐藏设计过程分析 信息加密 本功能的设计是用对称加密算法件来实现对文本文件的加密,文本文件是指TXT格式的文件,由于算法上的限制,文件的内容除去了中文字符,操作的是ASCII字符,每个字符只占用一个字节的空间,这样便于处理。 首先,选择文件格式,并选择所操作的文件,相应的代码实现如下: OpenFileDialog1.Filter 所有文件*.*|*.*|文本文件*.text|*.textResult OpenFileDialog1.ShowDialogIf Result DialogResult.OK And Len OpenFileDialog1.FileName 0 Then TextBox1.Text OpenFileDialog1.FileName str TextBox1.Text If RadioButton1.Checked True Then RichTextBox1.Enabled True RichTextBox1.Visible True PictureBox2.Visible False GroupBox3.Text 文本 FileOpen 1,str,OpenMode.Input text LineInput 1 PictureBox1.Visible False RichTextBox1.Text text mstr text FileClose 1 ElseIf RadioButton2.Checked True Then RichTextBox1.Visible False GroupBox3.Text 隐藏图片 PictureBox2.Visible True PictureBox1.Visible True RichTextBox1.Text RichTextBox1.Enabled False PictureBox1.Image Image.FromFile str Else : MsgBox请选择文件格式 End IfEnd If 文件选定后,文件的内容就可以一通过LineInput函数提取出来并显示到控见上,然后再惦记加密按扭,实现对文件的加密,这个过程包括了生成消息文摘,并将消息文摘附加到原文件之后,组成一个新的文件,为了不让外界看到文件的具体内容,必须对新组合的文件再进行依次加密。工作完成之后,系统会提示用户进行接下来的操作。 加密时用的加密算法与生成消息摘要的算法使用同一算法,在使用算法之前,为了是字符变换之后不超出可视ASCII字符集,首先要定义几个数值,用于恢复,如下: Const MIN_ASC 32 Space. Const _ASC 126. Const NUM_ASC _ASC - MIN_ASC + 1 加密算法主要实现代码为:Public Function strEncryptByVal from_text As String,ByVal password As String As String Dim i As IntegerDim ch As Integeroffset NumericPasswordpasswordRnd-1Randomizeoffsetstr_len Lenfrom_textFor i 1 To str_len ch AscMid$from_text,i,1 If ch MIN_ASC And ch _ASC Then ch ch-MIN_ASC Offset Int NUM_ASC +1 * Rnd ch ch + offset Mod NUM_ASC ch ch + MIN_ASC strEncrypt strEncrypt & Chr ch End IfNext i End Function Public Function NumericPassword ByVal password As String As LongDim value As LongDim ch As LongDim shift1 As Longstr_len LenpasswordFor i 1 To str_len ch AscMid$password,i,1 value value Xor ch * 2 shift1 value value Xor ch * 2 shift2 shift1 shift1 + 7 Mod 19 shift2 shift2 + 13 Mod 23Next iNumericPassword value End Function 在以上的算法中用到了随即生成位移量值的函数NumericPassword。 其中password为程序中指定的密钥“123456”。 经过上述运算之后,生成加密文件,它的内容会显示在控件中,此时的内容在外界看来是无法获取到真实内容的,而且文件的长度是原明文文件长度的两倍,因为该算法只是改变字符的ASCII值,并不会增加文件的长度。 为了在解密验证时使用,必须将加密文件的内容保存下来,点击保存按扭,文件回保存到默认的盘符下。 加密算法的流程如下图1: 图1 文本信息加密过程 上述对文本文件加密时,用的是对称加密算法,而实际中多用的是非对称加密算法,用发送方的公钥进行加密,验证解密时用的是私钥,这样做安全性会更高,且实际应用价值更广。 信息隐藏 图片文件由于不同于文本文件,对其进行信息隐藏可参考数字水印技术,数字水印(Digital Watermark)技术是将与多媒体内容相关或不相关的一些标示信息直接嵌入多媒体内容当中,但不影响原内容的使用价值,并不容易被人的知觉系统觉察或注意到。通过这些隐藏在多媒体内容中的信息,可以达到确认内容创建者,或者是否真实完整。 基于数字水印的这种特性,可以很好的将其应用到对图片的信息隐藏中,因为对图片的处理是将信息图片的内容隐藏到载体图片中,而且图片的内容又是由像素点构成,图片的信息隐藏技术可以用像素来隐藏信息。 图片文件有不同的格式,在这里只研究Bmp格式的文件,Bmp是Windows位图,它可用于任何颜色深度(从黑白到24位颜色),图片内容是保存在被称为象素的单位中,象素中包含有三种颜色值,分别是红R,绿G,蓝B,三种颜色值的不同组合可形成不同的颜色,每种颜色值占一个字节,即8位二进制位。 根据二进制到十进制的转换规则,高位值代表的十进制数比低位值要大,因此可以将颜色值的每位二进制位划分为不同的位平面,越高位对图片的显示效果影响越大,而较低位的变化影响较小。 上述特点说明图片颜色值的高位在效果显示上贡献最大,低几位的变化对显示效果的影响从肉眼上很难分辨出来。因此,在对图片处理时,可以将得数信息隐藏在图片象素的低几位中,经过实验,可取4位值来隐藏信息位。 现将图片信息隐藏算法如下设计: 假设原载体图片和隐藏图片的尺寸的大小相同; P1x,y表示为原载体图像象素点; P2x,y表示为相应载体图像位置的隐藏图像象素点; P3x,y表示为添加了隐藏信息后相对应载体图像位置的图像象素点; x,y是逻辑坐标系中的坐标轴,单位是象素; 为了将信息隐藏在图片中,需对相同位置的象素点进行位操作,由于只能存取4位信息,则应当将隐藏图片的高4位隐藏在载体图片的低4位中,这样既不会影响显示效果,有可以在验证时将隐藏图片显示出来。 首先,将P1x,y的低4位清空,这样做是为了不影响隐藏图片的象素值,其次,应将P2x,y的高4位移动到低4位,使得原来的高4位清空。 图2 图片信息隐藏过程 如图2所示,P1x,y,P2x,y,P3x,y的运算关系如下: P3x,y(P1x,y&11110000)|(P2x,y4) 图片象素点的排列类似于矩阵的格式,如图3: 图3 像素排列矩阵 因此,必须在一个循环体中从左到右,从上至下,对每个象素点,从P1x,y到 Pnx,y进行上述位运算操作。 经过以上步骤之后,图片信息已经隐藏在载体图片之中,P1x,y值已经变为P3x,y,但为了是验证时成功,还必须在P3x,y中取几个象素点,来存放一些特殊的信息,用于验证,在这里,取前8个象素点,并在每个象素点的低四位中按顺序存放0至7这八个数字信息,这样虽然改变了原来的低四位值,但只是有限的几个象素点被改变,所以并不会影响显示效果。具体的实现如下: Px,y Px,y&11110000| I I是从0到7的十进制数字 详细算法为:Private Sub Button2_ClickByVal sender As System.Object,ByVal e As System.EventArgs Handles Button2.ClickIf RadioButton2.Checked True Then x PictureBox1.Image.Width y PictureBox1.Image.Height pic1 /.ge pic2 /.ge For j 0 To x -1 For i 0 To y -1 c1 pic1.GetPixel j,i c2 pic2.GetPixel j,i a c1.A rr CIntCBytec1.R And CByte240 Or CBytec2.R 4 gg CIntCBytec1.G And CByte240 Or CBytec2.G 4 bb CIntCBytec1.B And CByte240 Or CBytec2.B 4If rr 0 Then rr 0If rr 255 Then rr 255If gg 0 Then gg 0If gg 255 Then gg 255If bb 0 Then bb 0If bb 255 Then bb 255c1 c1.FromArgb a,rr,gg,bbpic1.SetPixel j,i,c1 Next PictureBox1.Refresh Next For j 0 To 7 c1 pic1.GetPixel j,0 a c1.A rr CIntCBytec1.R And CByte240 Or CBytej + 1 gg CIntCBytec1.G And CByte240 Or CBytej + 1 bb CIntCBytec1.B And CByte240 Or CBytej + 1 c1 c1.FromArgb a,rr,gg,bb pic1.SetPixel j,0,c1 Next MsgBox图片信息隐藏成功End IfIf RadioButton1.Checked True Then RichTextBox1.Text strEncrypt RichTextBox1.Text,123456 MsgBox文本加密成功End If End Sub 在这之后,就已经完成了对图片的信息隐藏工作。 解密与隐藏信息提取设计过程分析 文本信息的解密 在完成对文本文件的加密后,加密文件被保存下来,由于该文件是由原文件明文信息和Hash信息附加到尾部组合成,因此文件的长度是明文的两倍,当验证的时候,需要将两部分信息分开,并分别对两部分信息进行相应的操作。 首先,由于整个加密文件已经加过密,应通过DeStrEncrypt进行一次解密,因为是对称加密算法,密钥与加密时相同,都是“123456”,解密过程与加密过程进行相反操作,加密时需要对每个字符加一个位移量,则在解密时需要减去同样减去相同的位移量,该位移量同样是由函数Numeric Password计算获得。 关键性代码为: For i 1 To str_len ch AscMid$from. text,i,1 If ch MIN_ASC And ch _ASC Thench ch - MIN_ASCoffset IntNUM_ASC + 1 * Rndch ch - offset Mod NUM_ASCIf ch 0 Then ch ch + NUM_ASCch ch + MIN_ASCDeStrEncrypt DeStrEncrypt & Chr$ch End If Next i 主要计算公式如下: ch ch - offset Mod NUM_ASC 当ch进行如上操作时,可能回超出规定的ASCII字符的范围,因此需要加如下的条件: If ch 0 Then ch ch + NUM_ASC 当超出范围时,通过加一个NUM_ASC使其处在规定的ASCII字符的范围内,此时,经过该步骤之后,获得了解密后的加密文件,假设表示为Msg1,它由明文MsgA和消息摘要MsgB组成,它们之间的关系如下: Msg1MsgA+ MsgB 分离之后,用消息摘要算法对MsgA进行同样运算,可得到另一个消息摘要MsgB,运算关系如下: MsgB strEncrypt MsgA,123456 运算之后,将MsgB与MsgB进行比较,当两者完全相同时,则说明验证成功,否则会提示文件非法。 主要代码为: If RadioButton1.Checked True Then strtemp1 DeStrEncrypt RichTextBox1.Text,123456 str strtemp1.Substringhalflen,halflen strtemp2 strtemp1.Substring 0,halflen strtemp2 DeStrEncrypt strtemp2,123456 If Stringpare str,strtemp2 0 Then RichTextBox1.Text strtemp2 MsgBox验证成功! Else If Stringpare str,strtemp2 0 Then MsgBox非法文件,来源不明! End If End If 详细流程如图4: 图4解密过程 隐藏信息的提取 完成对图片的信息隐藏之后,验证工作就变得相对容易,对其验证也是根据同样的原理进行,首相,必须对特殊信息进行提取,只有经过信息隐藏后的文件才包含有特殊信息,当提取出特殊信息时,就说明验证成功,否则失败,验证成功后,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 6.1 正视发展挑战 说课稿- 统编版九年级道德与法治上册
- 二年级品德与生活下册 红领巾胸前飘 2说课稿 人教新课标版
- 课题1 人类重要的营养物质(教学设计)九年级化学下册同步备课系列(人教版)
- 1.1正数和负数 教学设计 人教版七年级数学上册
- 山东省2025中国海洋大学期刊社专职编辑招聘1人(山东)笔试历年参考题库附带答案详解
- 安庆市2025安徽安庆市引进党政储备人才20人笔试历年参考题库附带答案详解
- 夏津县2025上半年山东德州市夏津县结合事业单位招聘征集普通高校毕业生入伍考试6笔试历年参考题库附带答案详解
- 2025西安都市绿色农业科技发展有限公司招聘考试历年参考题附答案详解
- 创新离婚抚养权协议子女健康成长及费用分摊合同
- 离婚债权债务协议:离婚时债权债务转移及清偿协议书
- GB/T 33881-2017罐车用铝合金板、带材
- GB/T 2951.2-1997电缆绝缘和护套材料通用试验方法第1部分:通用试验方法第2节:热老化试验方法
- 安全生产知识题库(2000道)
- 完形填空完整版教学设计
- ICU患者的人文关怀课件
- 《概率论与数理统计》-教学教案
- 放射培训考试习题及答案
- DB33∕1050-2016 城市建筑工程日照分析技术规程
- 道路、桥梁、隧道、地铁施工标准化手册(专业篇)
- 第十四章 环合反应天津大学
- 有机化学汪小兰 知识点总结 315化学
评论
0/150
提交评论