基于古典密码学的密码器设计_第1页
基于古典密码学的密码器设计_第2页
基于古典密码学的密码器设计_第3页
基于古典密码学的密码器设计_第4页
基于古典密码学的密码器设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、基于古典密码学的密码器设计    摘 要:本文基于古典密码学的维吉尼亚密码和列位密码,配合异或运算设计了一个简单实用的密码器。该密码器对于ASCII 码表内的字符经过三重密钥加密,可达到一定的信息保密作用,没有密钥一般难以破解,适用于保密要求不是太高的场合。关键词:维吉尼亚密码;列位密码;异或运算;vb1 引言密码学历史悠久,从以代替和换位为基础的古典密码到如今的DES,MD5 等现代密码,其保密性越来越强,也愈发复杂。与此同时,一般老百姓就越发觉得密码学深奥难懂,更别说使用密码器来传递信息了。现实生活中,民间信息的保密需求难以得到满足,一个简单实用的密

2、码器的设计变得尤为重要。现有的软件技术完全能满足这样一个简单密码器的设计。而网络的普及更有助于这个密码器发挥它的作用,比如可以把密文通过即时通讯等工具传递给对方而不用担心其他人获取信息,前提是双方事先已经约定好密钥。2 算法介绍2.1 维吉尼亚密码维吉尼亚密码是一种多表代替密码,其特点是将26 个凯撒密码表合成一个。它根据密钥决定用哪一行的密表,这样可以很好地抵抗字频统计。2如下表,上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:TO BE OR NOT TO BE THAT IS THE QUESTION当选定RELATIONS 作为密钥时,加密过程是:明文第一个字母为T,密

3、钥第一字母为R,因此可以找到在R 行中代替T 的为K,依此类推,密钥RElATION 结束一遍后再从R开始,这样得出对应关系如下:密钥:RELAT IONSR ELATI ONSRE LATIO NSREL明文:TOBEO RNOTT OBETH ATIST HEQUE STION密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY表1 维吉尼亚表A B C D E F G H I J K L M N O P Q R S T U V W X Y ZA -A B C D E F G H I J K L M N O P Q R S T U V W X Y ZB -B C D

4、 E F G H I J K L M N O P Q R S T U V W X Y Z AC -C D E F G H I J K L M N O P Q R S T U V W X Y Z A BD -D E F G H I J K L M N O P Q R S T U V W X Y Z A B CE -E F G H I J K L M N O P Q R S T U V W X Y Z A B C DF -F G H I J K L M N O P Q R S T U V W X Y Z A B C D EG -G H I J K L M N O P Q R S T U V W X

5、 Y Z A B C D E FH -H I J K L M N O P Q R S T U V W X Y Z A B C D E F G-2-I -I J K L M N O P Q R S T U V W X Y Z A B C D E F G HJ -J K L M N O P Q R S T U V W X Y Z A B C D E F G H IK -K L M N O P Q R S T U V W X Y Z A B C D E F G H I JL -L M N O P Q R S T U V W X Y Z A B C D E F G H I J KM -M N O P

6、Q R S T U V W X Y Z A B C D E F G H I J K LN -N O P Q R S T U V W X Y Z A B C D E F G H I J K L MO -O P Q R S T U V W X Y Z A B C D E F G H I J K L M NP -P Q R S T U V W X Y Z A B C D E F G H I J K L M N OQ -Q R S T U V W X Y Z A B C D E F G H I J K L M N O PR -R S T U V W X Y Z A B C D E F G H I J

7、K L M N O P QS -S T U V W X Y Z A B C D E F G H I J K L M N O P Q RT -T U V W X Y Z A B C D E F G H I J K L M N O P Q R SU -U V W X Y Z A B C D E F G H I J K L M N O P Q R S TV -V W X Y Z A B C D E F G H I J K L M N O P Q R S T UW -W X Y Z A B C D E F G H I J K L M N O P Q R S T U VX -X Y Z A B C D

8、E F G H I J K L M N O P Q R S T U V WY -Y Z A B C D E F G H I J K L M N O P Q R S T U V W XZ -Z A B C D E F G H I J K L M N O P Q R S T U V W X Y2.2 列位密码列位密码是换位密码之一,它把明文横向输入一个表格中(可以设定表格的列数为密钥),然后纵向读取得到密文。如下表:2明文:CANYOUUNDERSTAND密钥:4(表格列数)密文:CODTAUEANURNYNSDT A N DD E R SO U U NC A N Y输入方向输出方向图1 列位密码

9、2.3 异或运算异或是一个数学运算符。它应用于逻辑运算,运算符号为。异或算法规定,当两个运算数一真一假时结果为真,其余情况结果全为假。异或运算还有个特别好的性质:一个运算-3-数A 与另外一个运算数B 进行两次异或后结果为A 本身。4在计算机语言中, 1 代表真, 0 代表假。则有1111111110101010=01010101 ,0101010110101010=11111111。由此可以将明文的ASCII 码和密钥的ASCII 码进行异或运算得到密文的ASCII 码。反之可以由密文的ASCII 码和密钥的ASCII 码进行异或运算得到明文的ASCII 码。3 界面设计鉴于密码器简单实用的

10、初衷,以及密码器的自身功能,故用vb 画设计界面如下图。3包括明文框,3 个密钥框,密文框,以及加密解密按钮。其中密钥框内用文字提醒用户输入密钥的限制(通过对密钥框的getfocus()事件的设定,当用户单击密钥框后,这些中文自动消失)。需要提醒的是密文转明文时,需将密文输到密文框内,填上完整密钥,然后单击解密按钮。图2 密码器界面4 代码设计4.1 维吉尼亚密码代码实现维吉尼亚加密的关键在于如何根据密钥确定明文对应字母的ASCII 码应该往后移动多少位,ASCII 码内除字母外的其它字符怎么处理,密钥的循环使用怎么实现。为了简化编程,故设定密钥只限小写字母。经过观察,发现明文字母ASCII

11、码值加密后为原来值+密钥字母ASCII 码值-97(这里的密钥是小写字母)。除字母外的其它字符所在的ASCII 码集中在0 到64,91 到96,123到255(其中128-255 为扩展字符,不常用)。可在这三个数字区间内采用跟处理字母一样的方法。明文第i 个字符对密钥长度取模,当模值为0 时令模值为密钥长度的数值,这样可-4-以保证密钥的循环使用。6维吉尼亚解密是加密的逆过程,比较简单,具体见附录二。4.2 列位密码代码实现列位密码加密的关键在于通过密钥确定二维数组的列数,通过明文长度密钥+1 可以确定行数,利用redim 创建二维数组,将明文的字符按顺序给二维数组赋值,然后利用两个for

12、循环,先定列再定行,就可以完成换位操作。列位密码的解密相对比加密复杂,因为二维数组最后一行不可能都是满的,有可能最后几个变量没有被赋值。观察发现:将密文按顺序分成块,每个块有h 个字符(h 是二维数组的行数),最后一个块可能取不满h 个。从第一个块开始取第一个字符为明文第一个字符,第二个块取第一个字符为明文第二个字符,如此下去,第一个块取第n 个字符为明文第m个字符,第二个块取第n 个字符为明文第m+1 个字符。例如:密文为ZNUHGOOG,密钥为3。那么h 为83+1=3。分块得ZNU,HGO,OG。取第一块的第一个字符Z,第二块的第一个字符H,第三块的第一个字符O,第一块的第二个字符N,第

13、二块的第二个字符G,第三块的第二个字符G,第一块的第三个字符U,第二块的第三个字符O,连起来即:ZHONGGUO。通过这个方法就能很快找到明文。由此解密就没有困难了,具体见附录二。4.3 异或运算代码实现异或运算的加密主要是把明文字符的ASCII 码与对应密钥字符的ASCII 码进行异或运算就好。Vb 里异或运算的符号是Xor,实现起来相对比较容易。异或运算的解密只要将密文字符的ASCII 码再与对应密钥字符的ASCII 码进行异或运算即可,具体代码见附录二。5 结束语此密码器简单易实现,相信能满足一部分人信息保密的需求。但是,需要反复强调的是它只适用于保密性不高的场合。最后祝愿密码学能逐步走

14、进普通老百姓的生活,为人们所了解,为人们所用。参考文献1 龚沛曾,陆慰民,杨志强.VisualBasic 程序设计简明教程(第2 版)M.北京:高等教育出版社.2003.2 豆丁网.密码学基础.3 王静.VB 应用程序的界面设计方法J.赤峰学院学报.2008,24:5.4 王迤冉,高继梅.浅谈异或运算的应用J.周口师范高等专科学校学报.1999,16:2.5 白廷国.古典密码学初探J.齐齐哈尔师范高等专科学校学报.2005,1.6 刘桂海,张璟,李军怀.基于双密钥的三维Vigenere 密码的研究与应用J.计算机工程与应用.2008,44:12.Design for Scrambler Bas

15、ed on Classical CryptographyChen YanSchool of Traffic and Transportation, Beijing Jiaotong University, Beijing (100044)AbstractBased on the classical cryptography, the author designed a simple and practical scramber. Thescramber encrypt characters in the ASCII table with three keys, and can keeps ce

16、rtain informationconfidential without keys known. It is suitable for situations with less security requirement.Keywords: Virgenere; transposition; Xor; vb-5-附录一ASCII 码表(0-127)ASCII 值 控制字符 ASCII 值 控制字符 ASCII 值 控制字符 ASCII 值 控制字符0 NUT 32 (space) 64 96 、1 SOH 33 ! 65 A 97 a2 STX 34 ” 66 B 98 b3 ETX 35 #

17、 67 C 99 c4 EOT 36 $ 68 D 100 d5 ENQ 37 % 69 E 101 e6 ACK 38 & 70 F 102 f7 BEL 39 , 71 G 103 g8 BS 40 ( 72 H 104 h9 HT 41 ) 73 I 105 i10 LF 42 * 74 J 106 j11 VT 43 + 75 K 107 k12 FF 44 , 76 L 108 l13 CR 45 - 77 M 109 m14 SO 46 . 78 N 110 n15 SI 47 / 79 O 111 o16 DLE 48 0 80 P 112 p17 DCI 49 1 81

18、 Q 113 q18 DC2 50 2 82 R 114 r19 DC3 51 3 83 X 115 s20 DC4 52 4 84 T 116 t21 NAK 53 5 85 U 117 u        22 SYN 54 6 86 V 118 v23 TB 55 7 87 W 119 w24 CAN 56 8 88 X 120 x25 EM 57 9 89 Y 121 y26 SUB 58 : 90 Z 122 z27 ESC 59 ; 91 123 28 FS 60 < 92 124 |29 GS 6

19、1 = 93 125 30 RS 62 > 94 126 31 US 63 ? 95 127 DEL附录二密码器完整代码Private Sub Command1_Click()Dim i%, j%, k%, t%, h%, r%, iAsc%, keylen%, keylenb%, keyc%, length%, plain$, Cipher$, key$, cAs String * 1key = Text2.Textkeylen = Len(RTrim(key)ReDim ka(1 To keylen) As IntegerFor i = 1 To keylenka(i) = Asc(

20、Mid$(key, i, 1) - 97 'ka(i)取值0 到25Next i'以上记录密钥1keyb = Text4.Textkeylenb = Len(RTrim(keyb)-6-ReDim kb(1 To keylenb) As IntegerFor i = 1 To keylenbkb(i) = Asc(Mid$(keyb, i, 1) - 97 'kb(i)取值0 到25Next i'以上记录密钥2keyc = Val(Text5.Text)'以上记录密钥3,实质上就是排列的列数plain = Text1.Textlength = Len(R

21、Trim(plain)h = (length keyc) + 1If (length Mod keyc = 0) Thenh = (length keyc)End IfReDim p(h, keyc) As String '为列位加密建立二维数组For i = 1 To lengthc = Mid$(plain, i, 1)r = (i keyc) + 1If (i Mod keyc = 0) Thenr = (i keyc)End Ift = i Mod keycIf (t = 0) Thent = keycEnd Ifp(r, t) = cNext iplain = "&

22、quot;For t = 1 To keycFor r = 1 To hplain = plain & p(r, t)Next rNext t'以上这一步实现排列算法加密Cipher = ""For i = 1 To lengthj = i Mod keylenIf j = 0 Thenj = keylenEnd If '对ka 循环使用k = i Mod keylenbIf k = 0 Thenk = keylenbEnd Ifc = Mid$(plain, i, 1)Select Case Asc(c)Case Asc("A"

23、) To Asc("Z")iAsc = Asc(c) + ka(j)If iAsc > Asc("Z") TheniAsc = iAsc - 26End IfCase Asc("a") To Asc("z")iAsc = Asc(c) + ka(j)If iAsc > Asc("z") TheniAsc = iAsc - 26End IfCase 0 To 64 '非字母的ascii 码段为0 到64,91 到96,123 到255iAsc = Asc(c) + ka(j)I

24、f iAsc > 64 TheniAsc = iAsc - 65-7-End IfCase 91 To 96iAsc = Asc(c) + ka(j)For t = 0 To 4If iAsc > 96 TheniAsc = iAsc - 6 '这个地方要特别注意,因为-6 后可能还大于96,所以来5 次循环,就能确保iAsc 不再大于96End IfNext tCase 123 To 255iAsc = Asc(c) + ka(j)If iAsc > 255 TheniAsc = iAsc - 133End IfEnd Select'以上这一部分实现维多利亚

25、加密iAsc = iAsc Xor kb(k)'以上这一步实现异或加密Cipher = Cipher + Chr$(iAsc)Next iText3.Text = Cipher'以上是所有加密过程End SubPrivate Sub Command2_Click()Dim i%, j%, k%, t%, h%, r%, iAsc%, keylen%, keylenb%, length%, plain$, Cipher$, key$, c As String* 1key = Text2.Textkeylen = Len(RTrim(key)ReDim ka(1 To keylen) As Intege

温馨提示

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

评论

0/150

提交评论