基于古典密碼學(xué)的密碼器設(shè)計(jì)_第1頁
基于古典密碼學(xué)的密碼器設(shè)計(jì)_第2頁
基于古典密碼學(xué)的密碼器設(shè)計(jì)_第3頁
基于古典密碼學(xué)的密碼器設(shè)計(jì)_第4頁
基于古典密碼學(xué)的密碼器設(shè)計(jì)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于古典密碼學(xué)的密碼器設(shè)計(jì)    摘 要:本文基于古典密碼學(xué)的維吉尼亞密碼和列位密碼,配合異或運(yùn)算設(shè)計(jì)了一個(gè)簡單實(shí)用的密碼器。該密碼器對(duì)于ASCII 碼表內(nèi)的字符經(jīng)過三重密鑰加密,可達(dá)到一定的信息保密作用,沒有密鑰一般難以破解,適用于保密要求不是太高的場合。關(guān)鍵詞:維吉尼亞密碼;列位密碼;異或運(yùn)算;vb1 引言密碼學(xué)歷史悠久,從以代替和換位為基礎(chǔ)的古典密碼到如今的DES,MD5 等現(xiàn)代密碼,其保密性越來越強(qiáng),也愈發(fā)復(fù)雜。與此同時(shí),一般老百姓就越發(fā)覺得密碼學(xué)深?yuàn)W難懂,更別說使用密碼器來傳遞信息了。現(xiàn)實(shí)生活中,民間信息的保密需求難以得到滿足,一個(gè)簡單實(shí)用的密

2、碼器的設(shè)計(jì)變得尤為重要?,F(xiàn)有的軟件技術(shù)完全能滿足這樣一個(gè)簡單密碼器的設(shè)計(jì)。而網(wǎng)絡(luò)的普及更有助于這個(gè)密碼器發(fā)揮它的作用,比如可以把密文通過即時(shí)通訊等工具傳遞給對(duì)方而不用擔(dān)心其他人獲取信息,前提是雙方事先已經(jīng)約定好密鑰。2 算法介紹2.1 維吉尼亞密碼維吉尼亞密碼是一種多表代替密碼,其特點(diǎn)是將26 個(gè)凱撒密碼表合成一個(gè)。它根據(jù)密鑰決定用哪一行的密表,這樣可以很好地抵抗字頻統(tǒng)計(jì)。2如下表,上面第一行代表明文字母,左面第一列代表密鑰字母,對(duì)如下明文加密:TO BE OR NOT TO BE THAT IS THE QUESTION當(dāng)選定RELATIONS 作為密鑰時(shí),加密過程是:明文第一個(gè)字母為T,密

3、鑰第一字母為R,因此可以找到在R 行中代替T 的為K,依此類推,密鑰RElATION 結(jié)束一遍后再從R開始,這樣得出對(duì)應(yīng)關(guān)系如下:密鑰: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 列位密碼列位密碼是換位密碼之一,它把明文橫向輸入一個(gè)表格中(可以設(shè)定表格的列數(shù)為密鑰),然后縱向讀取得到密文。如下表:2明文:CANYOUUNDERSTAND密鑰:4(表格列數(shù))密文:CODTAUEANURNYNSDT A N DD E R SO U U NC A N Y輸入方向輸出方向圖1 列位密碼

9、2.3 異或運(yùn)算異或是一個(gè)數(shù)學(xué)運(yùn)算符。它應(yīng)用于邏輯運(yùn)算,運(yùn)算符號(hào)為。異或算法規(guī)定,當(dāng)兩個(gè)運(yùn)算數(shù)一真一假時(shí)結(jié)果為真,其余情況結(jié)果全為假。異或運(yùn)算還有個(gè)特別好的性質(zhì):一個(gè)運(yùn)算-3-數(shù)A 與另外一個(gè)運(yùn)算數(shù)B 進(jìn)行兩次異或后結(jié)果為A 本身。4在計(jì)算機(jī)語言中, 1 代表真, 0 代表假。則有1111111110101010=01010101 ,0101010110101010=11111111。由此可以將明文的ASCII 碼和密鑰的ASCII 碼進(jìn)行異或運(yùn)算得到密文的ASCII 碼。反之可以由密文的ASCII 碼和密鑰的ASCII 碼進(jìn)行異或運(yùn)算得到明文的ASCII 碼。3 界面設(shè)計(jì)鑒于密碼器簡單實(shí)用的

10、初衷,以及密碼器的自身功能,故用vb 畫設(shè)計(jì)界面如下圖。3包括明文框,3 個(gè)密鑰框,密文框,以及加密解密按鈕。其中密鑰框內(nèi)用文字提醒用戶輸入密鑰的限制(通過對(duì)密鑰框的getfocus()事件的設(shè)定,當(dāng)用戶單擊密鑰框后,這些中文自動(dòng)消失)。需要提醒的是密文轉(zhuǎn)明文時(shí),需將密文輸?shù)矫芪目騼?nèi),填上完整密鑰,然后單擊解密按鈕。圖2 密碼器界面4 代碼設(shè)計(jì)4.1 維吉尼亞密碼代碼實(shí)現(xiàn)維吉尼亞加密的關(guān)鍵在于如何根據(jù)密鑰確定明文對(duì)應(yīng)字母的ASCII 碼應(yīng)該往后移動(dòng)多少位,ASCII 碼內(nèi)除字母外的其它字符怎么處理,密鑰的循環(huán)使用怎么實(shí)現(xiàn)。為了簡化編程,故設(shè)定密鑰只限小寫字母。經(jīng)過觀察,發(fā)現(xiàn)明文字母ASCII

11、碼值加密后為原來值+密鑰字母ASCII 碼值-97(這里的密鑰是小寫字母)。除字母外的其它字符所在的ASCII 碼集中在0 到64,91 到96,123到255(其中128-255 為擴(kuò)展字符,不常用)。可在這三個(gè)數(shù)字區(qū)間內(nèi)采用跟處理字母一樣的方法。明文第i 個(gè)字符對(duì)密鑰長度取模,當(dāng)模值為0 時(shí)令模值為密鑰長度的數(shù)值,這樣可-4-以保證密鑰的循環(huán)使用。6維吉尼亞解密是加密的逆過程,比較簡單,具體見附錄二。4.2 列位密碼代碼實(shí)現(xiàn)列位密碼加密的關(guān)鍵在于通過密鑰確定二維數(shù)組的列數(shù),通過明文長度密鑰+1 可以確定行數(shù),利用redim 創(chuàng)建二維數(shù)組,將明文的字符按順序給二維數(shù)組賦值,然后利用兩個(gè)for

12、循環(huán),先定列再定行,就可以完成換位操作。列位密碼的解密相對(duì)比加密復(fù)雜,因?yàn)槎S數(shù)組最后一行不可能都是滿的,有可能最后幾個(gè)變量沒有被賦值。觀察發(fā)現(xiàn):將密文按順序分成塊,每個(gè)塊有h 個(gè)字符(h 是二維數(shù)組的行數(shù)),最后一個(gè)塊可能取不滿h 個(gè)。從第一個(gè)塊開始取第一個(gè)字符為明文第一個(gè)字符,第二個(gè)塊取第一個(gè)字符為明文第二個(gè)字符,如此下去,第一個(gè)塊取第n 個(gè)字符為明文第m個(gè)字符,第二個(gè)塊取第n 個(gè)字符為明文第m+1 個(gè)字符。例如:密文為ZNUHGOOG,密鑰為3。那么h 為83+1=3。分塊得ZNU,HGO,OG。取第一塊的第一個(gè)字符Z,第二塊的第一個(gè)字符H,第三塊的第一個(gè)字符O,第一塊的第二個(gè)字符N,第

13、二塊的第二個(gè)字符G,第三塊的第二個(gè)字符G,第一塊的第三個(gè)字符U,第二塊的第三個(gè)字符O,連起來即:ZHONGGUO。通過這個(gè)方法就能很快找到明文。由此解密就沒有困難了,具體見附錄二。4.3 異或運(yùn)算代碼實(shí)現(xiàn)異或運(yùn)算的加密主要是把明文字符的ASCII 碼與對(duì)應(yīng)密鑰字符的ASCII 碼進(jìn)行異或運(yùn)算就好。Vb 里異或運(yùn)算的符號(hào)是Xor,實(shí)現(xiàn)起來相對(duì)比較容易。異或運(yùn)算的解密只要將密文字符的ASCII 碼再與對(duì)應(yīng)密鑰字符的ASCII 碼進(jìn)行異或運(yùn)算即可,具體代碼見附錄二。5 結(jié)束語此密碼器簡單易實(shí)現(xiàn),相信能滿足一部分人信息保密的需求。但是,需要反復(fù)強(qiáng)調(diào)的是它只適用于保密性不高的場合。最后祝愿密碼學(xué)能逐步走

14、進(jìn)普通老百姓的生活,為人們所了解,為人們所用。參考文獻(xiàn)1 龔沛曾,陸慰民,楊志強(qiáng).VisualBasic 程序設(shè)計(jì)簡明教程(第2 版)M.北京:高等教育出版社.2003.2 豆丁網(wǎng).密碼學(xué)基礎(chǔ).3 王靜.VB 應(yīng)用程序的界面設(shè)計(jì)方法J.赤峰學(xué)院學(xué)報(bào).2008,24:5.4 王迤冉,高繼梅.淺談異或運(yùn)算的應(yīng)用J.周口師范高等??茖W(xué)校學(xué)報(bào).1999,16:2.5 白廷國.古典密碼學(xué)初探J.齊齊哈爾師范高等??茖W(xué)校學(xué)報(bào).2005,1.6 劉桂海,張璟,李軍懷.基于雙密鑰的三維Vigenere 密碼的研究與應(yīng)用J.計(jì)算機(jī)工程與應(yīng)用.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,實(shí)質(zhì)上就是排列的列數(shù)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 '為列位加密建立二維數(shù)組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'以上這一步實(shí)現(xiàn)排列算法加密Cipher = ""For i = 1 To lengthj = i Mod keylenIf j = 0 Thenj = keylenEnd If '對(duì)ka 循環(huán)使用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 '這個(gè)地方要特別注意,因?yàn)?6 后可能還大于96,所以來5 次循環(huán),就能確保iAsc 不再大于96End IfNext tCase 123 To 255iAsc = Asc(c) + ka(j)If iAsc > 255 TheniAsc = iAsc - 133End IfEnd Select'以上這一部分實(shí)現(xiàn)維多利亞

25、加密iAsc = iAsc Xor kb(k)'以上這一步實(shí)現(xiàn)異或加密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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論