4.5 解密与隐藏信息提取设计过程分析 copyright paper51.com 4.5.1 文本信息的解密 copyright paper51.com 在完成对文本文件的加密后,加密文件被保存下来,由于该文件是由原文件明文信息和Hash信息附加到尾部组合成,因此文件的长度是明文的两倍,当验证的时候,需要将两部分信息分开,并分别对两部分信息进行相应的操作。 copyright paper51.com 首先,由于整个加密文件已经加过密,应通过DeStrEncrypt()进行一次解密,因为是对称加密算法,密钥与加密时相同,都是“123456”,解密过程与加密过程进行相反操作,加密时需要对每个字符加一个位移量,则在解密时需要减去同样减去相同的位移量,该位移量同样是由函数Numeric Password()计算获得。 http://www.paper51.com 关键性代码为: paper51.com For i = 1 To str_len 内容来自论文无忧网 www.paper51.com ch = Asc(Mid$(from. text,i,1)) http://www.paper51.com If ch >= MIN_ASC And ch <= MAX_ASC Then 内容来自www.paper51.com ch = ch - MIN_ASC 内容来自www.paper51.com offset = Int((NUM_ASC + 1) * Rnd) 内容来自论文无忧网 www.paper51.com ch = ((ch - offset) Mod NUM_ASC) 内容来自论文无忧网 www.paper51.com If ch < 0 Then ch = ch + NUM_ASC http://www.paper51.com ch = ch +MIN_ASC copyright paper51.com DeStrEncrypt = DeStrEncrypt & Chr$(ch) paper51.com End If http://www.paper51.com Next i http://www.paper51.com 主要计算公式如下: copyright paper51.com
ch = ((ch -offset) Mod NUM_ASC) 内容来自www.paper51.com 当ch进行如上操作时,可能回超出规定的ASCII字符的范围,因此需要加如下的条件: 内容来自www.paper51.com
If ch < 0 Then ch= ch + NUM_ASC paper51.com
当超出范围时,通过加一个NUM_ASC使其处在规定的ASCII字符的范围内,此时,经过该步骤之后,获得了解密后的加密文件,假设表示为Msg1,它由明文MsgA和消息摘要MsgB组成,它们之间的关系如下: copyright paper51.com Msg1=MsgA+ MsgB 内容来自论文无忧网 www.paper51.com
分离之后,用消息摘要算法对MsgA进行同样运算,可得到另一个消息摘要MsgB’,运算关系如下: http://www.paper51.com MsgB’= strEncrypt (MsgA,"123456") 内容来自论文无忧网 www.paper51.com 运算之后,将MsgB与MsgB’进行比较,当两者完全相同时,则说明验证成功,否则会提示文件非法。 copyright paper51.com 主要代码为: 内容来自论文无忧网 www.paper51.com IfRadioButton1.Checked =True Then 内容来自www.paper51.com strtemp1 = DeStrEncrypt (RichTextBox1.Text,"123456") 内容来自论文无忧网 www.paper51.com str = strtemp1.Substring(halflen,halflen) copyright paper51.com strtemp2 = strtemp1.Substring (0,halflen) 内容来自论文无忧网 www.paper51.com strtemp2 = DeStrEncrypt (strtemp2,"123456") 内容来自www.paper51.com If String.Compare (str,strtemp2) = 0 Then 内容来自www.paper51.com
RichTextBox1.Text =strtemp2 http://www.paper51.com MsgBox("验证成功!") 内容来自www.paper51.com Else If String.Compare (str,strtemp2)<> 0 Then copyright paper51.com MsgBox("非法文件,来源不明!") http://www.paper51.com End If 内容来自www.paper51.com EndIf copyright paper51.com
详细流程如图4: copyright paper51.com
内容来自www.paper51.com
图4解密过程 paper51.com
4.5.2 隐藏信息的提取 paper51.com 完成对图片的信息隐藏之后,验证工作就变得相对容易,对其验证也是根据同样的原理进行,首相,必须对特殊信息进行提取,只有经过信息隐藏后的文件才包含有特殊信息,当提取出特殊信息时,就说明验证成功,否则失败,验证成功后,就应将隐藏信息显示出来,该过程是将象素的低四位值移到高四位。 内容来自论文无忧网 www.paper51.com 提取特殊信息时,只对前八个象素点进行操作验证,之前,在信息隐藏操作时,前八个象素点的低四位中依次隐藏着0至7的数字信息,验证时,顺序比较,如果包含有这八个数字,则说明是经过处理的文件,成功后,再显示隐藏图片。 paper51.com
具体算法公式为: http://www.paper51.com
P2(x,y)=(P3(x,y)&00001111)<<4 内容来自论文无忧网 www.paper51.com
详细算法代码为: http://www.paper51.com If CInt ((CByte (c.R) And CByte (15))) = j + 1 And CInt ((CByte (c.G) And CByte (15))) = j + 1 And CInt ((CByte (c.B) And CByte (15))) = j + 1 Then 内容来自www.paper51.com result =result + 1 内容来自www.paper51.com End If 内容来自www.paper51.com Next copyright paper51.com If result <> 8 Then 内容来自www.paper51.com MsgBox("非法文件,来源不明!") paper51.com Else If result = 8 Then paper51.com MsgBox("文件合法!单击‘确定’开始处理中....") http://www.paper51.com
Call proc() 内容来自www.paper51.com End If paper51.com
PrivateSub proc() copyright paper51.com For j = 0 To x - 1 http://www.paper51.com For i = 0 To y - 1 内容来自www.paper51.com c = pic1.GetPixel(j,i) 内容来自论文无忧网 www.paper51.com a = c.A copyright paper51.com
rr = CInt((CByte(c.R) And CByte(15)) << 4) //颜色值的移位 copyright paper51.com gg = CInt((CByte(c.G) And CByte(15)) << 4) paper51.com
bb = CInt((CByte(c.B) And CByte(15)) << 4) 内容来自论文无忧网 www.paper51.com If rr < 0 Thenrr = 0 内容来自www.paper51.com If rr > 255 Thenrr = 255 内容来自论文无忧网 www.paper51.com If gg < 0 Thengg = 0 http://www.paper51.com If gg > 255 Thengg = 255 内容来自论文无忧网 www.paper51.com
If bb < 0 Then bb = 0 内容来自www.paper51.com If bb > 255 Thenbb = 255 paper51.com
c = c.FromArgb(a,rr,gg,bb) 内容来自www.paper51.com
pic1.SetPixel(j,i,c) paper51.com Next 内容来自论文无忧网 www.paper51.com PictureBox1.Refresh() copyright paper51.com Next paper51.com
MsgBox("验证成功") copyright paper51.com End Sub http://www.paper51.com 算法流程如图5: paper51.com
copyright paper51.com http://www.paper51.com paper51.com http://www.paper51.com |