VB课程设计(论文)图片中的信息隐藏(VB设计).doc
福建农林大学计算机与信息学院信息工程类课程设计报告课程名称:信息论与编码课程设计题目:图片中的信息隐藏姓 名:系:信息工程专 业:电子信息工程年 级:04级学 号:指导教师:职 称:讲 师 2007 年 7 月 3 日 福建农林大学计算机与信息学院信息工程类课程设计结果评定评语:成绩:指导教师签字:任务下达日期:评定日期:目 录1课程设计的目的42课程设计的要求53课程设计报告内容63.1系统设计原理63.2系统设计过程63.3系统设计总结10参考文献10图片中的信息隐藏 1. 课程设计的目的随着因特网以惊人的速度发展,当今数字化和信息化日臻成熟,网络已经走进千家万户,逐渐取代各种人工的消息传递 ,成为信息传递最主要的渠道。然而,网络存在着许多的不安全性,使信息的截获变得轻而易举。保证信息传递过程中的安全性自然成为人们首要关心的事情 。 一直以来, 密码学通过只是单纯的通过将明文和密文的互相转化的过程,而丢信息进行加密。 虽然非法用户可以很容易地得到密文,但却很难解出明文 , 只有合法用户才能恢复出正确的明文。但量子计算机的出现和网络的飞速发展 ,使得破译密文变得越来越容易。在这种情况下,仅靠增加密钥长度来增强密文的破译难度显然已经没有办法满足人们的要求,也因此有信息隐藏技术的诞生。信息隐藏并不是什么新的东西,它起源于古希腊的密写术,中国的武侠小说也有很过关于此类的例子。如事前先对一张白纸进行特殊处理,再通过在一张白纸上烤火或者放入水中就可以惊奇的发现纸上的文字。信息隐藏就是以数字化宿主信息如文本、数字化的声音、影像等作为载体,在通过一定的处理,把特定信息隐藏在其中的方法。这种技术主要通过在空域或变换域下在保持载体信息格式、大小、信息质量保持不变的前提下把明文信息以一定的处理算法融合到载体信息中,并与之融为一体,对外的表现形式为载体的信息,在没有经过特定处理的情况下明文信息是不可见的。只有将带有明文信息的载体信息进行分离算法的处理才能将明文信息无损地全部恢复出来。信息隐藏技术这种具有高级隐蔽性的特质,让它能够轻松地地带着不为人所知的明文信息瞒天过海。才这因为如此,这种技术被广泛应用于信息的保密传输、隐藏加密、甚至用于版权保护和身份确认中的数字水印等诸多重要场合,在军事、金融、情报、电子商务以及音像出版等行业有着广泛的应用前景。2.课程设计的要求作为信息安全技术的一个重要分支,信息隐藏技术由于具有较好的隐蔽性和易操做性而逐渐成为信息安全领域的研究热点之一。大家都知道,在计算机系统中,每一张图片都是由一系列的像素构成的。每张图片上色彩种类的多少又同时决定了每个像素的位数。比如一张黑白的照片有两色,那么它就可以用一位的二进制数来表示。而如果一张彩色的照片有16位,它就必须要用四为的二进制数来表示,八位二进制数也就可以表示256种颜色。总之,随着像素所含位数的不断增加,它所能表示的图像的颜色也就不断增多。然而在像素的这些位中有很多位的二进制数并不会为人类的眼睛带来太大视觉冲突,换句话说就是携带了一些并没有没有太大用处的信息。因此,我们就可以通过把将要隐藏的信息转换为二进制数,然后在通过一定的处理方式,把所要隐藏的信息填充到图片原来的信息中,这样一来不仅不会使图像在视觉上有改变,而且把机密的信息简单的隐藏进了图像中。本次课程设计设计的系统主要分成两个部分。第一个部分主要是通过对图像进行分析并转化为二进制数,同时对要隐藏的信息进行分析,也转化为二进制的代码,再通过对原来图片二进制代码的填充形成一个新的含有隐藏信息的图片。并对图片进行保密。第二部分的内容主要是通过对被隐藏信息的图片进行分析,转化为二进制数,同时通过原先填充信息的方法把图片中的隐藏信息恢复出来的。希望通过本次课程设计的实习能够时间一个对图片进行加载隐藏信息和翻译隐藏信息的系统。3.课程设计报告内容3.1 课程设计原理本实习系统的设计,在第一部分的步骤入下:1) 通过对图像进行分析并转化为二进制数,这样就可以看到图像没一个像素的完整代码。同时将对像素中最后一位进行处理,因为是最后一位,图像的视觉效果上并不会有太大的影响。2) 再对要隐藏的信息进行处理,也将其转化为二进制的代码并一位位输出。3) 采用位覆盖的方法来改变象素值。对图象进行位扫描,同时进行位覆盖,若为 0位,则对应的图像象素值最后一位置 0,若为 1,则相应置为 1,然后回写到原图像,完成信息的插入。第二部分的原理与第一部分相同,它是第一部分的逆处理。1) 要将图像中信息读出,转化为二进制代码并扫描图像每个象素最后一位。2) 读取后组成二进制位串,转换成 ASCII码即可显示明文。3.2 系统设计3.2.1本次试验通过VB进行设计,其主要运行截面如下: 其中,加入隐藏信息为第一部分,可以先用LOAD控件加载图片,然后在TEXT1中输入所要隐藏的信息,然后执行即可输出加载后的代码。最后保存下图片就可以啦。 第二部分,用以到处隐藏信息。同样用LOAD控件加载含有隐藏信息的图片,然后分别用导出代码和到处隐藏信息空间,就可以获取所要的明文信息啦。3.2.2本次设计的运行代码如下:Private Sub Command1_Click()Set Picture1.Picture = LoadPicture("d:out.jpg")End SubPrivate Sub Command2_Click()Dim bintemp As Long, stringbintmp As String, stringbintmpC As StringDim i As Long, j As LongDim positiontoinsert As Long, strTxt1 As String, stringtobefilled As StringDim lngTmpClr As Longstringtobefilled = Space(2000)stringbintmp = ""strTxt1 = Text1.TextLSet stringtobefilled = strTxtlFor i = 1 To Len(stringtobefilled)bintemp = CLng(Asc(Mid(stringtobefilled, i, 1)For j = 7 To 0 Step -1If bintemp And 2 j Thenstringbintmp = stringbintmp & "1"Elsestringbintmp = stringbintmp & "0"End IfNextNextText2.Text = stringbintmppositiontoinsert = 0For i = 0 To Picture1.ScaleHeight - Screen.TwipsPerPixelYFor j = 0 To Picture1.Width - Screen.TwipsPerPixelX Step Screen.TwipsPerPixelXIf positiontoinsert < 2000 Then positiontoinsert = positiontoinsert + 1Exit ForlngTmpClr = Picture1.Point(j, i)stringbintmpC = Mid(stringbintmp, positiontoinsert, 1)If lngTmpClr Mod 2 = 0 ThenIf stringbintmpC = "0" ThenPieture1.PSet (j, i), lngTmpClrElsePieture1.PSet (j, j), lngTmpClr + 1End IfElseIf stringbintmpC = "0" ThenPieture1.PSet (j, i), lngTmpClr - 1ElsePieture1.PSet (j, i), lngTmpClrEnd IfEnd IfNextNextEnd SubPrivate Sub Command3_Click()Text3.Text = ""For i = 0 To (Picture1.ScaleHeight - Screen.TwipsPerPixelY) Step Screen.TwipsPerPixelYFor j = 0 To (Picture1.Width - Screen.TwipsPerPixelX) Step Screen.TwipsPerPixelXIf positiontoinsert < 2000 Then positiontoinsert = positiontoinsert + lExit ForText3.Text = Text3.Text & Picture1.Point(j, i) Mod 2NextNextEnd SubPrivate Sub Command4_Click()Dim i As Long, j As LongDim stringbintmpC As String, stringtoreadout As StringDim bintemp As LongFor i = 1 To Len(Text3.Text) Step 8stringbintmpC = Mid(Text3.Text, i, 8)bintemp = 0For j = 1 To 8If Mid(stringbintmp, j, 1) = 1 Thenbintemp = bintemp + 2 (8 - j)End IfNextstringtoreadout = stringtoreadout + Chr(bintemp)NextText4.Text = Trim(stringtoreadout)End SubPrivate Sub Command5_Click()Set Picture1.Picture = LoadPicture("d:in.jpg")Command1.Enabled = TrueEnd SubPrivate Sub Command6_Click()filetobesaveas = "d:out.jpg"SavePicture Picture1.Image, filetobesaveasEnd SubPrivate Sub Command7_Click()EndEnd SubPrivate Sub Text1_Change()If KeyAscii > 127 Then KeyAscii = 0End Sub3.2.3本次设计的运行结果如下:(1)要加密的图片(2)图片加密:(3)图片解密:3.3 实习总结通过本次的实习课程设计,我学到了很多东西。首先,这次课程设计让我真正了解了一种基于虚拟信道传输的方法。让更深刻的认识到信息隐藏技术的原理,工作方式,工作工程,从而设计出了这个系统。本次课程设计设计的系统主不仅实现了在图片中隐藏信息,对图片进行保密的功能外,还进一步实现了将被隐藏信息的图片恢复出来的功能。其次,本次实验还让我充分学了VB语言的特性,在实践中了解了VB的实现和应用。可谓是“理论知道实践,实践中提升理论,理论实践相结合”。在这次系统实习中一定要要感谢一个人,那就是黄习培老师,感谢他在设计中对我支持和帮忙以及对信息隐藏技术的介绍。同时也感谢所有在实习中帮过我同学们。参考文献:1曹雪虹,张宗橙著.信息论与编码.北京邮电大学出版社.2001.82 Ranjan Bose著,武传坤译.信息论、编码与密码学.机械工业出版社.2005.13贾罗尔著visual basic多媒体开发指南北京:科学出版社,C200X4 钮心忻信息隐藏与数字水印北京:北京邮电大学出版社20045 汪小帆等.信息隐藏技术-方法与应用.北京:机槭工业出版社-20111