亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        二戰(zhàn)完美密碼機(jī)的再生

        2012-09-09 01:16:08林雪云
        關(guān)鍵詞:加解密反射器尼格

        林雪云

        (福建師范大學(xué)福清分校,福建福清 350300)

        二戰(zhàn)完美密碼機(jī)的再生

        林雪云

        (福建師范大學(xué)福清分校,福建福清 350300)

        在詳細(xì)了解恩尼格瑪密碼機(jī)工作原理的基礎(chǔ)上,突破現(xiàn)有網(wǎng)絡(luò)產(chǎn)品,利用C++與匯編語言的混合編程來嘗試實(shí)現(xiàn)華麗界面和加解密的核心部分.它與網(wǎng)絡(luò)其他現(xiàn)有產(chǎn)品特色之處在于綜合運(yùn)用軟硬件知識(shí),從實(shí)踐上對(duì)恩尼格瑪機(jī)的認(rèn)識(shí)上升一個(gè)層次.

        恩尼格瑪機(jī);加密;解密

        無數(shù)軍事戰(zhàn)爭(zhēng)的成功往往是因?yàn)榧皶r(shí)、準(zhǔn)確地獲得了軍事情報(bào),而失敗則是由于軍事機(jī)密的泄漏.商業(yè)情報(bào)也是現(xiàn)代企業(yè)參與國際競(jìng)爭(zhēng)的關(guān)鍵因素.當(dāng)前的國際形勢(shì)十分緊張,商業(yè)競(jìng)爭(zhēng)非常激烈,人們對(duì)密碼學(xué)的精密性也提出了更高的要求.恩尼格瑪機(jī)一直是密碼學(xué)中的一枝獨(dú)秀,筆者的研究正是模擬實(shí)現(xiàn)恩尼格瑪機(jī)的一個(gè)簡(jiǎn)單、實(shí)用的軟件.

        1 研究理論基礎(chǔ)(基于實(shí)物機(jī)器)

        1.1 恩尼格瑪機(jī)核心組成

        圖1 恩尼格瑪機(jī)組成

        恩尼格瑪機(jī)包括鍵盤、連接板、轉(zhuǎn)子、反射器、固定口、顯示器,各部分連接關(guān)系如圖1所示.

        1.2 研究特色

        網(wǎng)絡(luò)上關(guān)于恩尼格瑪機(jī)此類產(chǎn)品的研究不少,所基于的原理是一樣的,但是產(chǎn)品大都粗糙,界面難看.本研究設(shè)計(jì)力求改進(jìn)這個(gè)問題,使界面更美觀;同時(shí)對(duì)于鍵盤,雖然與普通鍵盤差別不大,為了簡(jiǎn)便僅保存了26個(gè)英文字母,但是本研究在功能方面擴(kuò)展了對(duì)中文的加解密,因此在中文加解密的時(shí)候,所能接受的輸入不僅僅是26個(gè)字母.

        1.3 可能性分析

        恩尼格瑪有3大密鑰:轉(zhuǎn)子的相對(duì)位置、轉(zhuǎn)子的起始位置、連接板的連接.它們分別提供的可能性如下:(1)3個(gè)轉(zhuǎn)子間不同的相對(duì)位置為3×2×1=6種可能性;(2)3個(gè)轉(zhuǎn)子不同的方向組成了26×26×26=17 576種可能性;(3)連接板上兩兩交換26個(gè)字母的可能性則是異常龐大,有100 391 791 500種.因此,總共有6×17576×100 391 791 500約等于1億億種可能性.這樣龐大的可能性,即便動(dòng)員大量的人力物力,要想靠“暴力破譯法”來逐一試驗(yàn)可能性,也幾乎是不可能的.它的多級(jí)轉(zhuǎn)子的轉(zhuǎn)動(dòng)使得頻率分析破解也成為不可能.而收發(fā)雙方,則只要按照約定的轉(zhuǎn)子方向、位置和連接板連線狀況,就可以非常輕松簡(jiǎn)單地進(jìn)行通訊了.這就是“恩尼格瑪”密碼機(jī)的保密原理.[1]

        2. 系統(tǒng)實(shí)現(xiàn)

        2.1 XLAT簡(jiǎn)介

        在詳細(xì)了解之前,必須先了解常用到的一條匯編指令——XLAT.

        格式:XLAT

        執(zhí)行的操作:(AL)←((BX)+(AL))

        說明:數(shù)據(jù)表的首地址放入BX,要查找的單元的相對(duì)地址(位移量)由AL指出.

        功能:在BX為表首地址的內(nèi)存表中查找相對(duì)地址為AL的單元,取出其中的內(nèi)容再放入AL中.即將AL中的位移量換成對(duì)應(yīng)的存儲(chǔ)單元中的內(nèi)容.

        用途:日常生活中有許多需要查表完成的工作,比如查日歷表、密碼表、書目表、商品價(jià)格表、ASCII表、數(shù)學(xué)公式等.建好表以后,只要將表名的地址放入BX中,要查的號(hào)碼放入AL,再用XLAT指令就可以找到要查找的內(nèi)容了.[2]將本項(xiàng)目的核心部分設(shè)計(jì)成一張張表,有連接板表、轉(zhuǎn)子表、轉(zhuǎn)子的逆表、反射器表等等;然后使用XLAT指令,輕松地完成核心部分的設(shè)計(jì).

        2.2 核心零件的實(shí)現(xiàn)

        2.2.1 轉(zhuǎn)子 在實(shí)際中,機(jī)器轉(zhuǎn)動(dòng)起來的時(shí)候,轉(zhuǎn)動(dòng)的是一種固定的連接關(guān)系.于是,可以定義一種類似的連接關(guān)系,然后將這種連接關(guān)系拿起來轉(zhuǎn)動(dòng).通過將26個(gè)字母打亂,與字母的正常順序a到z進(jìn)行比較,以a到z為正方向求出差值,可得出轉(zhuǎn)子的加密表.解密表的目的是為了找到原字母,例如輸入h,經(jīng)過轉(zhuǎn)子加密得到d,那么解密時(shí)輸入d,期望輸出是h.按這種方法可以求得轉(zhuǎn)子一的解密表.根據(jù)以上原理,分別定義如下:定義轉(zhuǎn)子一的加、解密表:

        charrotor1[26]={8,24,24,9,9,22,11,22,12,24,14,20,11,2,14,20,21,1,3,11,22,24,10,17,24,11};

        char rotor4[26]={2,4,12,4,15,6,16,2,18,6,15,5,17,17,9,24,4,15,25,2,14,23,2,15,12,2};

        用同樣的方法定義轉(zhuǎn)子二和轉(zhuǎn)子三的加、解密表:

        char rotor2[26]={13,1,8,1,7,7,1,18,10,12,22,11,12,1,21,0,13,25,16,24,11,25,1,4,21,1};

        char rotor3[26]={16,4,4,8,23,25,23,3,10,0,9,10,22,12,24,24,24,24,10,4,6,22,0,1,22,8};

        char rotor5[26]={25,22,25,13,25,15,4,25,10,5,18,19,19,13,25,0,1,2,16,5,1,14,15,25,14,8};

        char rotor6[26]={20,3,16,3,1,22,22,18,4,0,23,18,2,2,2,2,10,4,16,17,4,16,0,22,25,14};

        2.2.2 連接板連接板最初是26個(gè)字母的正常順序a到z.設(shè)置密鑰時(shí),根據(jù)密鑰把字母的位置兩兩調(diào)換.每個(gè)字母作為輸入都有其相應(yīng)的輸出,而當(dāng)將輸出作為輸入的時(shí)候,其輸入將成為輸出.比如輸入密鑰“as df gh”,表示as,df,gh分別互換.對(duì)于已調(diào)整的字符as,輸入a,將輸出s,輸入s,將輸出a;對(duì)于未調(diào)整的,輸入與輸出都是自己.該密鑰設(shè)置前與設(shè)置后的情況如下所示:設(shè)置前char linked[27]=“abcdefghijklmnopqrstuvwxyz”;設(shè)置后char linked[27]=“sbcfedhgijklmnopqratuvwxyz”.

        2.2.3 反射器 反射器是簡(jiǎn)單地將正常順序的字母a到z兩兩交換.交換的3個(gè)字符,將互相成為對(duì)方的輸入輸出,如f和x互相交換,輸入f將得到輸出x,而輸入x將得到輸出f.

        2.3 3大密鑰的設(shè)置

        圖2 轉(zhuǎn)子相對(duì)位置

        2.3.1 轉(zhuǎn)子的相對(duì)位置 從界面上接收到用戶輸入的3個(gè)參數(shù)作為轉(zhuǎn)子的相對(duì)位置,如圖2所示.當(dāng)窗口轉(zhuǎn)向的時(shí)候會(huì)調(diào)用系統(tǒng)在DLL中實(shí)現(xiàn)的set Key-One(int,int,int)函數(shù),該函數(shù)完成轉(zhuǎn)子的相對(duì)位置這一密鑰的設(shè)置.

        圖3 轉(zhuǎn)子起始位置

        2.3.2 轉(zhuǎn)子的起始位置從界面上接收到用戶輸入的3個(gè)參數(shù)作為轉(zhuǎn)子的起始位置,如圖3所示.當(dāng)窗口轉(zhuǎn)向的時(shí)候會(huì)調(diào)用DLL中的set Key Two(int,int,int)函數(shù),該函數(shù)完成轉(zhuǎn)子的起始位置這一密鑰的設(shè)置.

        圖4 連接板的連接

        2.3.3 連接板的連接 從界面上接收到用戶輸入的“連接板的連接”的數(shù)據(jù),如圖4所示.當(dāng)窗口轉(zhuǎn)向的時(shí)候會(huì)調(diào)用DLL中的set Key Two(int,int,int)函數(shù),該函數(shù)實(shí)現(xiàn)連接板的連接這一密鑰的設(shè)置.

        2.4 加密和解密

        一個(gè)字母在最核心的部分要經(jīng)過如下過程:明文字符→連接板→轉(zhuǎn)子一加密表→轉(zhuǎn)子二加密表→轉(zhuǎn)子三加密表→反射器→轉(zhuǎn)子三解密表→轉(zhuǎn)子二解密表→轉(zhuǎn)子一解密表→連接板→密文字符.解密時(shí),只要設(shè)置好相同的密鑰后,輸入密文字符,按照與加密同樣的過程去解密,會(huì)得出最初輸入的明文字符.

        如圖5所示,將解密過程與加密過程綜合起來分析就會(huì)清楚其中的神奇之處.拿幾處來解說一下,比如A1與A2,它們是互為加解密過程的,如果連接板用字符c查出來是d的話,那么用d查出來便是c,對(duì)于沒有互換的總是保持原樣;比如B2與B1,在B1處用的是轉(zhuǎn)子一的解密表,B2處用的是轉(zhuǎn)子一的加密表,它們是互為加解密的;再如C1與C2處,對(duì)于反射器來說,它是兩兩交換的,用e查出來是z,則用z查出來是e.以此類推,加、解密全過程中的其他類似.因此,可以用簡(jiǎn)單地使用相同的過程來實(shí)現(xiàn)加、解密.每加密或解密1個(gè)字母,3個(gè)轉(zhuǎn)子都會(huì)做相應(yīng)的轉(zhuǎn)動(dòng)調(diào)整.其調(diào)整規(guī)則為:轉(zhuǎn)子一(包括加密表與解密表,因?yàn)橄到y(tǒng)使用加密表與解密表來共同模擬一個(gè)轉(zhuǎn)子的功能,以下的轉(zhuǎn)子二、轉(zhuǎn)子三同理)每次都會(huì)轉(zhuǎn)過1格;當(dāng)轉(zhuǎn)子一轉(zhuǎn)動(dòng)26的倍數(shù)時(shí)轉(zhuǎn)子二轉(zhuǎn)過1格,否則不轉(zhuǎn);當(dāng)轉(zhuǎn)子二轉(zhuǎn)動(dòng)26的倍數(shù)時(shí)轉(zhuǎn)子三轉(zhuǎn)過1格,否則不轉(zhuǎn).只要最初的用密鑰設(shè)置正確,其中的每一步都可以按上面的原理來實(shí)現(xiàn).[3]

        圖5 加密過程與解密過程

        該系統(tǒng)對(duì)英文的處理可以使用上面的原理,而對(duì)于中文的處理有一些不同.這是因?yàn)槎x的轉(zhuǎn)子的加、解密表上只有26個(gè)字母,所以不能直接對(duì)中文字符本身加、解密.可以考慮一種處理方法:對(duì)其機(jī)內(nèi)碼(十六進(jìn)制數(shù))進(jìn)行加、解密,其最核心的依然是效仿恩尼格瑪機(jī).

        接下來分別詳細(xì)介紹英文加解密與中文加解密.

        (1)英文加解密.上文已經(jīng)提到,英文的加、解密可以直接對(duì)字符進(jìn)行加解密.因?yàn)橛⑽牡?6個(gè)字母可以與系統(tǒng)所使用的連接板、轉(zhuǎn)子和反射器表上面的26個(gè)字母一一對(duì)應(yīng).

        (2)中文加解密.對(duì)于中文則不能直接對(duì)字符進(jìn)行加解密了,在實(shí)現(xiàn)中是對(duì)中文的機(jī)內(nèi)碼加解密.一個(gè)中文字符的機(jī)內(nèi)碼是由2個(gè)字節(jié)組成,也就是4位的十六進(jìn)制數(shù).加密時(shí),將一個(gè)中文字符的機(jī)內(nèi)碼0,1,…,E,F(xiàn)分別映射到字母表的a,b,c,…,n,o,p,然后對(duì)這些英文字符進(jìn)行加密,得出密文;解密時(shí),先將密文(一些英文字符)解密,然后將它們轉(zhuǎn)換成4位的十六進(jìn)制數(shù),還原成漢字明文的機(jī)內(nèi)碼.例如“郭”的機(jī)內(nèi)碼為“B9F9”,在加密的時(shí)候,要將“B9”拆成英文字母“l(fā)”和“j”,將“F9”拆成英文字母“p”和“j”,然后對(duì)字母串“l(fā)jpj”進(jìn)行加密,密文為“rkkd”;在解密的時(shí)候,首先將“rkkd”解密為“l(fā)jpj”,然后查表將它還原為“B9F9”.注意,在此是加密還是解密必須人為地選擇,即需要告訴系統(tǒng)這是中文的加密還是中文的解密,界面上有讓用戶選擇的按鈕.

        3 結(jié)語

        使用高級(jí)語言混合編程來實(shí)現(xiàn)恩尼格碼機(jī),與網(wǎng)絡(luò)上實(shí)現(xiàn)的一般的恩尼格瑪機(jī)系統(tǒng)產(chǎn)品區(qū)別之處在于,利用了C++與匯編語言的混合編程、C#Winform,以VS2008為開發(fā)工具,界面比網(wǎng)絡(luò)上更美觀,性能更實(shí)用,可以實(shí)現(xiàn)中、英文加密.并且可將他作為一個(gè)軟硬件結(jié)合的很好的教學(xué)例子來進(jìn)行演示講解.[4-6]

        [1] 百度.恩尼格碼密碼機(jī)[EB/OL].[2011-11-05]http://baike.baidu.com/view/451596.htm.

        [2] 鄭曉薇.匯編語言[M].北京:機(jī)械工業(yè)出版社,2009:69-72.

        [3] 維基百科.恩尼格碼密碼機(jī)[EB/OL].[2012-01-08]http://zh.wikipedia.

        [4] 王成耀.匯編語言程序設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2004:252-261.

        [5] 李淑馨,陳 偉.Visual C++2008程序設(shè)計(jì)完全自學(xué)教程[M].北京:清華大學(xué)出版社,2009:343-501.

        [6] 鄭阿奇.Visual C++.NET 2010開發(fā)實(shí)踐——基于C++/CLI[M].北京:電子工業(yè)出版社,2010:40-50.

        Reproduction of the Perfect Cipher Machine in World WarⅡ

        LIN Xue-yun
        (Fuqing College of Fujian Normal University,F(xiàn)uqing 350300,China)

        Based on the detailed understanding of the working principle of Enigma machine,the authors try to achieve the luxuriant interface and the core of the encryption and decryption by using the hybrid programming of C++and assembly language.Compared with other existing network products,this one features its comprehensive use of software and hardware knowledge,and in practice,it improves the understanding of Enigma machine to a new level.

        Enigma machine;encryption;decryption

        book=41,ebook=139

        TN918.3

        A

        10.3969/j.issn.1007-2985.2012.04.009

        (責(zé)任編輯 向陽潔)

        1007-2985(2012)04-0041-04

        2012-05-16

        福建省科學(xué)研究項(xiàng)目(JB10196)

        林雪云(1976-),女,福建福清人,福建師范大學(xué)福清分校數(shù)計(jì)系講師,碩士,主要從事數(shù)據(jù)庫、數(shù)據(jù)挖掘和

        密碼學(xué)研究.

        猜你喜歡
        加解密反射器尼格
        尼格爺爺?shù)拈L胡子
        尼格爺爺?shù)拈L胡子
        PDF中隱私數(shù)據(jù)的保護(hù)方法
        基于角反射器的機(jī)載毫米波云雷達(dá)外定標(biāo)實(shí)驗(yàn)
        電子取證中常見數(shù)據(jù)加解密理論與方法研究
        基于FPGA的LFSR異步加解密系統(tǒng)
        一種反向多結(jié)GaAs太陽電池背反射器的研究
        網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)募咏饷芟到y(tǒng)研究
        軟件工程(2014年11期)2014-11-15 20:02:46
        星載激光反射器的斜置角設(shè)計(jì)
        雷達(dá)角反射器的設(shè)計(jì)及應(yīng)用
        久久精品国产精油按摩| 国产亚洲日韩欧美一区二区三区| 亚洲熟妇在线视频观看| 亚洲二区三区四区太九| 亚洲av男人的天堂一区| 五月丁香综合激情六月久久| 人与嘼av免费| 91久久精品一二三区蜜桃| 一区二区三区在线观看视频| 日本人妻免费在线播放| 国产av麻豆mag剧集| 国产伦精品一区二区三区视| 久久夜色精品国产噜噜噜亚洲av | 亚洲中文字幕熟女五十| 国产一级二级三级在线观看av| 亚洲精品成人无码中文毛片| 久久麻豆精品国产99国产精| 亚洲精品精品日本日本| 日本精品视频免费观看| 欧美国产综合欧美视频| 97精品伊人久久大香线蕉| 无码91 亚洲| 99久久精品人妻少妇一| 久久99精品久久水蜜桃| 国产精品刺激好大好爽视频| av福利资源在线观看| 熟女人妻中文字幕av| 中文字幕乱伦视频| 精品国产一区二区三区香蕉| 亚洲女同一区二区三区| 久久日日躁夜夜躁狠狠躁| 久久丫精品国产亚洲av不卡| 91亚洲精品福利在线播放| 久久精品人妻一区二三区| 国产乱妇无乱码大黄aa片| 久久福利青草精品免费| 国产在线拍91揄自揄视精品91| 亚洲啪啪视频一区二区| 亚洲永久无码7777kkk| 狠狠色噜噜狠狠狠狠97俺也去| 99久久国产精品免费热|