




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2010-2011密碼學(xué)課程設(shè)計(jì)報(bào)告密碼學(xué)課程設(shè)計(jì)報(bào)告一古典密碼算法31.1.實(shí)驗(yàn)內(nèi)容31.2.實(shí)驗(yàn)?zāi)康?1.3.需求分析31.4.程序流程圖41.5.算法實(shí)現(xiàn)51.5.1 Playfair體制51.5.1.1算法描述51.5.1.2 核心代碼解析51.5.1.3運(yùn)行結(jié)果71.5.1.4 Playfair安全分析71.5.2 Vigenere體制81.5.2.1算法描述81.5.2.2核心代碼解析81.5.2.3運(yùn)行結(jié)果101.5.2.4 Vigenere安全分析101.5.3 Vernam體制111.5.3.1算法描述111.5.3.2核心代碼解析121.5.3.3 運(yùn)行結(jié)果131.5.3.
2、4 Vernam安全分析13二分組密碼算法DES142.1.實(shí)驗(yàn)內(nèi)容142.2.實(shí)驗(yàn)?zāi)康?42.3.需求分析142.4.DES算法描述152.5 DES算法流程172.6.DES核心代碼分析172.7.DES運(yùn)行結(jié)果202.8.DES安全分析20三大素?cái)?shù)密碼算法RSA223.1.實(shí)驗(yàn)內(nèi)容223.2.實(shí)驗(yàn)?zāi)康?23.3.需求分析223.4. 程序流程圖233.5. 算法實(shí)現(xiàn)243.5.1 Miller-Rabin素性測(cè)試法243.5.1.1算法描述243.5.1.2核心代碼分析253.5.1.3運(yùn)行結(jié)果263.5.1.4 算法效率分析263.5.2 RSA算法實(shí)現(xiàn)273.5.2.1算法描述273
3、.5.2.2 核心代碼分析273.5.2.3運(yùn)行結(jié)果293.5.2.4 RSA安全分析29四實(shí)驗(yàn)總結(jié)31一古典密碼算法1.1.實(shí)驗(yàn)內(nèi)容:用高級(jí)語(yǔ)言實(shí)現(xiàn)古典加密方法,多表古典加密方法主要有Playfair體制、Vigenere體制、Beaufor體制、Vernam體制和Hill體制,其中此實(shí)驗(yàn)本人運(yùn)用了C+實(shí)現(xiàn)了Playfair體制、Vigenere體制、Vernam體制這三種多表古典加密方法。1.2.實(shí)驗(yàn)?zāi)康模赫莆斩啾砉诺浼用芊椒ú⒎治龆啾砉诺浼用芊椒ǜ鞣N體制的安全性。1.3.需求分析: 古典密碼系統(tǒng)已經(jīng)初步體現(xiàn)出近代密碼系統(tǒng)的雛形,加密方法逐漸復(fù)雜,其變化較小。雖然從近代密碼學(xué)的觀點(diǎn)來(lái)看,許
4、多古典密碼是不安全的,即是極易破譯的,但我們不應(yīng)當(dāng)忘掉古典密碼在歷史上發(fā)揮的巨大作用。古典密碼的代表密碼體制主要有:?jiǎn)伪泶婷艽a、多表代替密碼及轉(zhuǎn)輪密碼。Caser密碼就是一種典型的單表加密體制;多表代替密碼有Vigenere密碼、Playfair體制、Vernam體制;著名的Enigma密碼就是第二次世界大戰(zhàn)中使用的轉(zhuǎn)輪密碼。古典密碼的代表密碼體制主要有:?jiǎn)伪泶婷艽a、多表代替密碼及轉(zhuǎn)輪密碼。古典密碼的加密方法一般是文字置換,使用手工或機(jī)械變換的方式實(shí)現(xiàn)。單表代換密碼,指一旦密鑰被選定,則每個(gè)明文字母對(duì)應(yīng)的數(shù)字都被加密變換成對(duì)應(yīng)的惟一數(shù)字,即對(duì)每個(gè)明文字母都用一個(gè)固定的明文字母表到密文字母表
5、的確定映射。這種簡(jiǎn)單的一一對(duì)應(yīng)關(guān)系,很容易被破譯者用頻率分析法進(jìn)行破解。針對(duì)這種缺陷,人們提出多表代換密碼,用一系列(兩個(gè)以上)代換表依次對(duì)明文消息的字母進(jìn)行代換。古典加密算法中很多算法的保密性是基于算法本身保密的,這一點(diǎn)與現(xiàn)代加密算法不同。正是由于算法本身保密,所以并不利于密碼學(xué)的發(fā)展,密碼學(xué)在古典密碼學(xué)階段發(fā)展是非常緩慢的。古典密碼大都比較簡(jiǎn)單,這些加密方法是根據(jù)字母的統(tǒng)計(jì)特性和語(yǔ)言學(xué)知識(shí)加密的,在可用計(jì)算機(jī)進(jìn)行密碼分析的今天,很容易被破譯。雖然現(xiàn)在很少采用,但研究這些密碼算法的原理,對(duì)于理解、構(gòu)造和分析現(xiàn)代密碼是十分有益的。古典密碼在整個(gè)密碼體系中起著基礎(chǔ)的作用,因此理解并熟練運(yùn)用是進(jìn)入
6、這一學(xué)科的關(guān)鍵,也有助于進(jìn)一步學(xué)習(xí)近代密碼學(xué)。1.4.程序流程圖: 因?yàn)橄旅嫠鶎?shí)現(xiàn)的三種體制程序個(gè)模塊之間的聯(lián)系都一樣,所以這里就簡(jiǎn)化只做了一個(gè)流程圖: 開(kāi)始 選擇要進(jìn)行的操作是否進(jìn)行加密? NY輸入明文輸入密鑰輸出密文重新選擇操作是否進(jìn)行解密? N Y輸入密文 輸入與加密相同密鑰 輸出明文 結(jié)束 1.5.算法實(shí)現(xiàn):1.5.1 Playfair體制:1.5.1.1算法描述:Playfair密碼出現(xiàn)于1854年,是最著名的多字母加密密碼。Playfair算法使用關(guān)鍵詞構(gòu)造一個(gè)55的矩陣,其構(gòu)造規(guī)則是按行依次寫(xiě)下關(guān)鍵詞的字母(去除重復(fù)字母),然后按照字母表的順序依次寫(xiě)下其余的字母,其中I和J算作同
7、一個(gè)字母。Playfair加密過(guò)程如下:首先,將明文按兩個(gè)字母分組,假定一組中的明文字母分別為m1和m2,若m1與m2相同,則在重復(fù)的字母中間插入一個(gè)事先約定好的字母,若明文字母為奇數(shù)則在明文的末端添加一個(gè)實(shí)現(xiàn)事先約定好的字母。例如約定插入字母和補(bǔ)充字母均為X,則對(duì)明文CONNECTION的分組為CO NX NE CT IO NX。其次,按照如下規(guī)則對(duì)明文組進(jìn)行加密: 當(dāng)m1、m2在同一行時(shí),對(duì)應(yīng)的密文c1、c2分別是緊靠m1、m2右邊的字母。其中行的最后一個(gè)字母的密文是行的第一個(gè)字母。(解密時(shí)相反) 當(dāng)m1、m2在同一列時(shí),對(duì)應(yīng)的密文c1、c2分別是緊靠m1、m2下方的字母。其中列的最后一個(gè)
8、字母的密文是列的第一個(gè)字母。(解密時(shí)相反) 當(dāng)m1、m2不在同一行也不在同一列時(shí),對(duì)應(yīng)的密文c1、c2分別是與m1同行且與m2同列的字母及與m2同行且與m1同列的字母。(解密時(shí)相同)最后,將成生的密文組按次序排列即為最終的密文字母序列。1.5.1.2 核心代碼解析:因?yàn)镻layfair算法使用關(guān)鍵詞構(gòu)造一個(gè)55的矩陣,所以在編寫(xiě)代碼的時(shí)候首先應(yīng)該根據(jù)輸入的密鑰來(lái)填充矩陣。/把密鑰中的字母填入到矩陣中for(int k=0;kstrlen(ch1);k+) for(int t=0;t25;t+)if(ch1k=letterst&flagt=0)chij=letterst;flagt=1;if(j
9、4)j+;else i+;j=0; for( k=0;k25;k+)/按字母表順序把未用字母依次填入到矩陣中if(flagk=0)chij=lettersk;flagk=1;if(j4)j+;elsei+;j=0;/*根據(jù)Playfair算法規(guī)則加密的重要部分當(dāng)m1、m2在同一行時(shí),對(duì)應(yīng)的密文c1、c2分別是緊靠m1、m2右邊的字母。其中行的最后一個(gè)字母的密文是行的第一個(gè)字母。(解密時(shí)相反)當(dāng)m1、m2在同一列時(shí),對(duì)應(yīng)的密文c1、c2分別是緊靠m1、m2下方的字母。其中列的最后一個(gè)字母的密文是列的第一個(gè)字母。(解密時(shí)相反) 當(dāng)m1、m2不在同一行也不在同一列時(shí),對(duì)應(yīng)的密文c1、c2分別是與m1
10、同行且與m2同列的字母及與m2同行且與m1同列的字母。(解密時(shí)相同)*/for(k=0;kstrlen(ch2);k+=2)int m1,m2,n1,n2;for(m1=0;m1=4;m1+)for(n1=0;n1=4;n1+)if(ch2k=chm1n1)break;if(ch2k=chm1n1)break;for(m2=0;m2=4;m2+)for(n2=0;n24)n1=n1%5;m1=m1+1;if(n24)n2=n2%5;m2=m2+1;if(m1=m2)ch2k=chm1(n1+1)%5;ch2k+1=chm2(n2+1)%5;else if(n1=n2)ch2k=ch(m1+1)
11、%5n1;ch2k+1=ch(m2+1)%5n2;elsech2k=chm1n2;ch2k+1=chm2n1;1.5.1.3運(yùn)行結(jié)果:1.5.1.4 Playfair安全分析:Playfair密碼相對(duì)于簡(jiǎn)單的單表密碼是一個(gè)巨大的進(jìn)步。首先,因?yàn)橛?6個(gè)字母,故有2626=676個(gè)字母對(duì),因此對(duì)單個(gè)字母對(duì)進(jìn)行判斷要困難得多。而且,單個(gè)字母的相對(duì)頻率比字母對(duì)的相對(duì)頻率在統(tǒng)計(jì)規(guī)律上要好。這樣利用頻率分析字母對(duì)就更困難一些。因?yàn)檫@些原因,Playfair密碼在很長(zhǎng)一段時(shí)間內(nèi)被認(rèn)為是牢不可破的。第一次世界大戰(zhàn)中英軍就使用它作為陸軍的戰(zhàn)時(shí)加密體制,并且在第二次世界大戰(zhàn)中,美軍及其他一些盟國(guó)軍隊(duì)仍在大量使用
12、。PlayFair是對(duì)明文的每?jī)蓚€(gè)字母進(jìn)行加密,而英語(yǔ)中各種連字(即兩個(gè)字母的組合)已經(jīng)被制成表格,且常用的連字如th、he、an、in、re、es等,及其變換(如er等),可以對(duì)密文出現(xiàn)的頻率高的連字進(jìn)行猜測(cè),便能破解密文。此外,PlayFair密碼存在另一弱點(diǎn),每個(gè)明文字母在密文中僅對(duì)應(yīng)5種可能的字母,除非使用的密鑰很長(zhǎng),否則矩陣的剩余行是可以預(yù)測(cè)出來(lái)的。注意到這些,甚至可以僅用一段密文就可以攻破它。盡管Playfair密碼被認(rèn)為是較安全的,它仍然是相對(duì)容易攻破的,因?yàn)樗拿芪娜匀煌旰玫乇A袅嗣魑恼Z(yǔ)言的大部分結(jié)構(gòu)特征。 1.5.2 Vigenere體制:1.5.2.1算法描述:Vigene
13、re體制是 1586年由法國(guó)密碼學(xué)家Blaise de Vigenere發(fā)明的,Vigenere密碼是一種典型的多表替代密碼。其密碼表密碼表是以字母表移位為基礎(chǔ)把26個(gè)英文字母進(jìn)行循環(huán)移位,排列在一起,形成2626的方陣。當(dāng)密鑰的長(zhǎng)度比明文短時(shí),密鑰可以周期性地重復(fù)使用,直至完成明文中每個(gè)字母的加密。利用26個(gè)英文字母構(gòu)造Vigenere方陣,利用它可以方便地進(jìn)行加密和解密,當(dāng)用密鑰字母對(duì)明文字母進(jìn)行加密時(shí),Vigenere方陣中的第行第列的字母就是相應(yīng)的密文字母。算法規(guī)律:將AZ以025編號(hào),那么加密過(guò)程就是,在代換表的第一行中找到消息字母,如“w”,然后向后移動(dòng)d(即3)次,所得的字母就是
14、密文了。如果數(shù)到末位,那么下一次移位就從頭(即A)繼續(xù)。也就是說(shuō),可以將AZ看成一個(gè)環(huán),加密過(guò)程就是找定消息字母后,將指針往環(huán)的某個(gè)特定方向移位,次數(shù)就是密鑰字母所代表的數(shù)字,這其實(shí)是一個(gè)模26的過(guò)程,所以在算法之中要將字母對(duì)應(yīng)到數(shù)字。 Vigenere密碼表Vigenere密碼算法表示如下:設(shè)密鑰K= k0k1k2kd,明文M= m0m1m2mn加密變換:ci=(mi+ki)mod26, i=0,1,2,n解密變換:mi=(ci-ki)mod26, i=0,1,2,n1.5.2.2核心代碼解析:根據(jù)Vigenere密碼是以字母表移位為基礎(chǔ)把26個(gè)英文字母進(jìn)行循環(huán)移位,排列在一起,形成2626
15、的方陣。所以首先進(jìn)行數(shù)字與字母對(duì)應(yīng)。/把行號(hào)字母對(duì)應(yīng)到數(shù)字Char vNN=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,Z;int number(char x) char y=a; for(int i=0;iN;i+) if(x=(y+i) return i; 加密過(guò)程:給定一個(gè)密鑰字母k和一個(gè)明文字母m,密文字母就是位于k所在的行與m所在的列的交叉點(diǎn)上的那個(gè)字母 .void encryption(string m,string k)/加密過(guò)程 coutm; coutk; int mlen,klen; mlen=m.length(); k
16、len=k.length(); char *p,*q,*t;/明文,初始密鑰,密鑰串。把string換成char p=new charm.length()+1; strcpy(p,m.c_str(); q=new chark.length()+1; strcpy(q,k.c_str(); t=new charm.length()+1; int j=0; for(int i=0;imlen;i+) ti=qj; j+; j=j%klen; 解密過(guò)程:由密鑰字母決定行,在該行中找到密文字母,密文字母所在列的列首對(duì)應(yīng)的明文字母就是相應(yīng)的明文 void disencryption(string c,s
17、tring k)/解密過(guò)程 coutc; coutk; int clen,klen; clen=c.length(); klen=k.length(); char *p,*q,*t; /密文,初始密鑰,密鑰串。把string換成char p=new charc.length()+1; strcpy(p,c.c_str(); q=new chark.length()+1; strcpy(q,k.c_str(); t=new charc.length()+1; int j=0; for(int i=0;iclen;i+) ti=qj; j+; j=j%klen; 1.5.2.3運(yùn)行結(jié)果:1.5.2
18、.4 Vigenere安全分析:維吉尼亞密碼采用26張?zhí)鎿Q表依次對(duì)明文消息的字母進(jìn)行替換。由于此密碼變換中,明文的每個(gè)字母是按照密鑰字的指示,選用不同的加同余密碼替換而成的,因此,同一個(gè)字母在明文中的位置不同,對(duì)應(yīng)的密文字母就不同。它克服了單表替換密碼中明密文字母一一對(duì)應(yīng)的弱點(diǎn),能比較好的抵抗頻率攻擊法。但多表替換中各個(gè)字母的概率只是被做了置換,它不能夠抵抗已知明文等攻擊方法。這種密碼的強(qiáng)度在于每個(gè)明文字母對(duì)應(yīng)著多個(gè)密文字母,且每個(gè)密文字母使用惟一的密鑰字母,因此字母出現(xiàn)的頻率信息被隱藏了,不過(guò)并非所有的明文結(jié)構(gòu)信息都隱藏了。Vigenre提出用一個(gè)所謂的“密鑰自動(dòng)生成系統(tǒng)”來(lái)將密鑰詞和明文自
19、身連接來(lái)生成不重復(fù)的密鑰詞。即使采用這個(gè)方案,它也是易受攻擊的。因?yàn)槊荑€和明文具有相同頻率的分布特征,所以我們可以應(yīng)用統(tǒng)計(jì)學(xué)的方法。例如,用“e”加密“e”,由英文字母的相關(guān)概率分析圖如 (圖1)可以估計(jì)出其發(fā)生的概率為(0.127)20.016,而用“t”加密“t”發(fā)生的概率大概只有它的一半,等等。密碼分析者利用這些規(guī)律能夠成功地進(jìn)行分析雖然破譯Vigenre密碼的技術(shù)并不復(fù)雜 。如果認(rèn)為是用Vigenre密碼加密的,破譯能否取得進(jìn)展將取決于能否判定密鑰詞的長(zhǎng)度。洞察到這個(gè)事實(shí)很重要:如果兩個(gè)相同的明文序列之間的距離是密鑰詞長(zhǎng)度的整數(shù)倍,那么產(chǎn)生的密文序列也是相同的。圖1語(yǔ)言的統(tǒng)計(jì)特性1.5
20、.3 Vernam體制:1.5.3.1算法描述:序列 密 碼 的思 想 起 源 于 20世 紀(jì) 20年 代 ,最早的二進(jìn) 序 列密碼 系 統(tǒng)是 Vernam密碼 。Vernam密碼將明文消息轉(zhuǎn)化為二進(jìn)制數(shù)字序列 ,密鑰序列也為二進(jìn)數(shù)字序列 ,加密是按明文序列和密鑰序列逐位模 2相加進(jìn)行 ,解密也是按 密文序列和密鑰序列逐位模 2相加進(jìn)行 。Vernam的算法實(shí)現(xiàn)一個(gè)簡(jiǎn)潔而又穩(wěn)定的文件加密解密類(lèi)。通過(guò)此類(lèi)加密的數(shù)據(jù)是絕對(duì)無(wú)法在沒(méi)有密鑰的情況下被破解的。它的基本原理是,需要有一個(gè)需要加密的明文和一個(gè)隨機(jī)生成的解密鑰匙文件。然后使用這兩個(gè)文件組合起來(lái)生成密文:(明文) 組合 (密鑰) = 加密后的密
21、文。使用Vernam加密算法,經(jīng)其處理的密鑰可以擁有與待加密文件大小相同的密鑰長(zhǎng)度,而且輸出文件的大小相比待加密文件無(wú)任何改變(精確到字節(jié))。換言之,密鑰文件越大,加密強(qiáng)度越高!Vernam密碼算法: 1、 現(xiàn)代密碼體制的萌芽是Vernam加密方法。 2、Vernam密碼是美國(guó)電話電報(bào)公司的Gilbert Vernam在1917年為電報(bào)通信設(shè)計(jì)的一種非常方便的密碼,它在近代計(jì)算機(jī)和通信系統(tǒng)設(shè)計(jì)中得到了廣泛應(yīng)用。 3、Vernam密碼的明文、密鑰和密文均用二元數(shù)字序列表示。這是一種使用異或方法進(jìn)行加密解密的方法。 4、要編制Vernam密碼,只需先把明文和密鑰表示成二元序列,再把它們按位模2相加
22、,就可得到密文。 5、而解密只需把密文和密鑰的二元序列按位模2相加便可得到明文。 6、開(kāi)始時(shí)使用一個(gè)定長(zhǎng)的密鑰序列,這樣產(chǎn)生的密文能形成有規(guī)律的反復(fù),易被破譯;后來(lái)采用的密鑰與明文同長(zhǎng),且密鑰序列只用一次,稱(chēng)為“一次一密體制”。1.5.3.2核心代碼解析:根據(jù)Vernam密碼算法: Vernam密碼的明文、密鑰和密文均用二元數(shù)字序列表示,這就需要我們輸入的字符要轉(zhuǎn)換成二進(jìn)制數(shù)字然后進(jìn)行加解密計(jì)算。void change(string &plain, vector&number) /字母變數(shù)字for (unsigned int i=0;iplain.size();i+)number.push_b
23、ack(plaini-97); /a為0要編制Vernam密碼,只需先把明文和密鑰表示成二元序列,再把它們按位模2相加,就可得到密文。 vector encrypt_compute(vector m,vector k) /加密計(jì)算vector sum;for(unsigned int i=0; im.size(); i+)sum.push_back(mi+ki)%26);return sum;解密只需把密文和密鑰的二元序列按位模2相加便可得到明文。下面就是解密代碼:vector discrypt_compute(vector c,vector k) /解密計(jì)算vector resum;int
24、temp;for(unsigned int i=0; ic.size(); i+)temp = ci-ki;if(temp0) temp+=26;resum.push_back(temp);return resum;1.5.3.3 運(yùn)行結(jié)果:1.5.3.4 Vernam安全分析:1917年工程師Gilbert Vernam首先引入了這種體制,其運(yùn)算基于二進(jìn)制數(shù)據(jù)而非字母。這種技術(shù)的本質(zhì)在于構(gòu)造密鑰的方式。Vernam提出使用連續(xù)的磁帶,其最終也將循環(huán)。所以事實(shí)上該體制是使用周期很大的循環(huán)密鑰。盡管周期很長(zhǎng)對(duì)于密碼分析增添了相當(dāng)大的難度,但是如果有足夠的密文,使用已知或可能的明文序列,或者聯(lián)合使
25、用二者,該方案是可以被破解的。Vernam加密算法實(shí)際上是在(0,1)字母上運(yùn)用Vigenere加密算法。這種方法的優(yōu)點(diǎn)在于(mi + ki) mod 2運(yùn)算非常容易實(shí)現(xiàn)。而且ci + kimi mod 2,這里的加法都是不進(jìn)位的二進(jìn)制加法 在同一密鑰下,Vernam密碼只要找到一組和密碼對(duì)應(yīng)的明文便可破譯。之后,陸軍情報(bào)軍官Joseph Mauborgne提出了一種對(duì)Vernam密碼的改進(jìn)方案,從而達(dá)到了最完善的安全性。Mauborgne建議使用與消息一樣長(zhǎng)且無(wú)重復(fù)的隨機(jī)密鑰來(lái)加密消息,另外,密鑰只對(duì)一個(gè)消息進(jìn)行加解密,之后丟棄不用。每一條新消息都需要一個(gè)與其等長(zhǎng)的新密鑰。這就是著名的一次一
26、密,它是不可攻破的。它產(chǎn)生的隨機(jī)輸出與明文沒(méi)有任何統(tǒng)計(jì)關(guān)系。因?yàn)槊芪牟话魑牡娜魏涡畔?,所以無(wú)法可破。 因?yàn)榻o出任何長(zhǎng)度與密文一樣的明文,都存在著一個(gè)密鑰產(chǎn)生這個(gè)明文。因此,如果你用窮舉法搜索所有可能的密鑰,就會(huì)得到大量可讀、清楚的明文,但是沒(méi)有辦法確定哪一個(gè)才是真正所需的,因而這種密碼是不可破的。 在實(shí)際中,一次一密提供完全的安全性存在兩個(gè)基本難點(diǎn):(1). 產(chǎn)生大規(guī)模隨機(jī)密鑰有實(shí)際困難。任何經(jīng)常使用的系統(tǒng)都需要建立在某個(gè)規(guī)則基礎(chǔ)上的數(shù)百萬(wàn)個(gè)隨機(jī)字符,提供這樣規(guī)模的真正隨機(jī)字符是相當(dāng)艱巨的任務(wù)。(2). 更令人擔(dān)憂的是密鑰的分配和保護(hù)。對(duì)每一條發(fā)送的消息,需要提供給發(fā)送方和接收方等長(zhǎng)度的密
27、鑰。因此,存在龐大的密鑰分配問(wèn)題。因?yàn)樯厦孢@些困難,一次一密實(shí)際很少使用,主要用于安全性要求很高的低帶寬信道。如能做到以下三點(diǎn),則 Vernam密碼是絕對(duì)不可破譯的:(1) 密鑰是隨機(jī)序列;(2) 密鑰的長(zhǎng)度大于或等于明文的長(zhǎng)度;(3) 一個(gè)密鑰只用一次;二分組密碼算法DES2.1.實(shí)驗(yàn)內(nèi)容:用高級(jí)語(yǔ)言實(shí)現(xiàn)實(shí)現(xiàn)DES加密和解密算法,DES是由初始變換、乘積變換和逆初始變換構(gòu)成,乘積變換是DES算法的核心。首先用代碼實(shí)現(xiàn)這幾個(gè)變換,然后組合成DES加密算法。由于DES解密算法與加密算法相同只是子密鑰使用次序不同,因此可簡(jiǎn)單地由加密算法實(shí)現(xiàn)解密算法。2.2.實(shí)驗(yàn)?zāi)康模赫莆辗纸M加密算法的設(shè)計(jì)與實(shí)現(xiàn)方
28、法并對(duì)DES的安全性進(jìn)行分析。2.3.需求分析: 數(shù)據(jù)加密標(biāo)準(zhǔn)(DES,Data Encryption Standard)是一種使用密鑰加密的塊密碼,它基于使用56位密鑰的對(duì)稱(chēng)算法。美國(guó)國(guó)家標(biāo)準(zhǔn)局(NBS)于1973年向社會(huì)公開(kāi)征集一種用于政府機(jī)構(gòu)和商業(yè)部門(mén)的加密算法,經(jīng)過(guò)評(píng)測(cè),最終選擇了IBM公司提出的一種加密算法。經(jīng)過(guò)一段時(shí)間的試用,美國(guó)政府于1977年頒布DES。DES是分組密碼的典型代表,也是第一個(gè)被公布出來(lái)的標(biāo)準(zhǔn)算法,曾被美國(guó)國(guó)家標(biāo)準(zhǔn)局(現(xiàn)為國(guó)家標(biāo)準(zhǔn)與技術(shù)研究所NIST)確定為聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS PUB 46),使用廣泛,特別使在金融領(lǐng)域,曾是對(duì)稱(chēng)密碼體制事實(shí)上的世界標(biāo)準(zhǔn)。D
29、ES自從公布以來(lái),已成為金融界及其他各種行業(yè)最廣泛應(yīng)用的對(duì)稱(chēng)密鑰密碼系統(tǒng)。DES是分組密碼的典型代表,也是第一個(gè)被公布出來(lái)的標(biāo)準(zhǔn)算法。原來(lái)規(guī)定DES算法的使用期為10年,可能是DES尚未受到嚴(yán)重威脅,更主要是新的數(shù)據(jù)加密標(biāo)準(zhǔn)研制工作尚未完成,或意見(jiàn)尚未統(tǒng)一,所以當(dāng)時(shí)的美國(guó)政府宣布延長(zhǎng)它的使用期。因而DES超期服役到2000年。近三十年來(lái),盡管計(jì)算機(jī)硬件及破解密碼技術(shù)的發(fā)展日新月異,若撇開(kāi)DES的密鑰太短,易于被使用窮舉密鑰搜尋法找到密鑰的攻擊法不談,直到進(jìn)入20世紀(jì)90年代以后,以色列的密碼學(xué)家Shamir等人提出一種“差分分析法”,以后日本人也提出了類(lèi)似的方法,這才稱(chēng)得上對(duì)它有了攻擊的方法。
30、嚴(yán)格地說(shuō)Shamir的“差分分析法”也只是理論上的價(jià)值。至少到目前為止是這樣,比如后來(lái)的“線形逼迫法”,它是一種已知明文攻擊,需要2434.3981012個(gè)明、密文對(duì),在這樣苛刻的要求下,還要付出很大的代價(jià)才能解出一個(gè)密鑰。不管是差分攻擊還是線性攻擊法,對(duì)于DES的安全性也僅僅只做到了“質(zhì)疑”的地步,并未從根本上破解DES。也就是說(shuō),若是能用類(lèi)似Triple-DES或是DESX的方式加長(zhǎng)密鑰長(zhǎng)度,仍不失為一個(gè)安全的密碼系統(tǒng)。早在DES提出不久,就有人提出造一專(zhuān)用的裝置來(lái)對(duì)付DES,其基本思想無(wú)非是借用硬件設(shè)備來(lái)實(shí)現(xiàn)對(duì)所有的密鑰進(jìn)行遍歷搜索。由于電子技術(shù)的突飛猛進(jìn),專(zhuān)門(mén)設(shè)備的造價(jià)大大降低,速度有
31、質(zhì)的飛躍,對(duì)DES形成了實(shí)際的威脅。DES確實(shí)輝煌過(guò),它的弱點(diǎn)在于專(zhuān)家們一開(kāi)始就指出的,即密鑰太短。美國(guó)政府已經(jīng)征集評(píng)估和判定出了新的數(shù)據(jù)加密標(biāo)準(zhǔn)AES以取代DES對(duì)現(xiàn)代分組密碼理論的發(fā)展和應(yīng)用起了奠基性的作用,它的基本理論和設(shè)計(jì)思想仍有重要參考價(jià)值。安全性是分組密碼最重要的設(shè)計(jì)原則,它要求即使攻擊者知道分組密碼的內(nèi)部結(jié)構(gòu),仍不能破譯該密碼,這也意味著,不存在針對(duì)該密碼的某種攻擊方法,其工作量小于窮密鑰搜索。但是隨著密碼分析技術(shù)的發(fā)展,使得對(duì)于具有更多輪的分組密碼的破譯成為可能。現(xiàn)如今,依靠Internet的分布式計(jì)算能力,用窮舉密鑰搜索攻擊方法破譯已成為可能。數(shù)據(jù)加密標(biāo)準(zhǔn)DES已經(jīng)達(dá)到它的信
32、任終點(diǎn)。但是作為一種Feistel加密算法的例子仍然有討論的價(jià)值。2.4.DES算法描述: DES是一種分組密碼,明文、密文和密鑰的分組長(zhǎng)度都是64位并且是面向二進(jìn)制的密碼算法。DES處理的明文分組長(zhǎng)度為64位,密文分組長(zhǎng)度也是64位,使用的密鑰長(zhǎng)度位56位(實(shí)際上函數(shù)要求一個(gè)64位的密鑰作為輸入,但其中用到的只有56位,另外8位可以用做奇偶校驗(yàn)位或者完全隨意設(shè)置)。DES是對(duì)合運(yùn)算,它的解密過(guò)程和加密相似,解密時(shí)使用與加密同樣的算法,不過(guò)子密鑰的使用次序要反過(guò)來(lái)。DES的整個(gè)體制時(shí)公開(kāi)的,系統(tǒng)的安全性完全靠密鑰的保密。DES在算法結(jié)構(gòu)上采用置換、代替、模2加等基本密碼運(yùn)算構(gòu)成輪加密函數(shù),對(duì)輪
33、加密函數(shù)進(jìn)行16次迭代。DES算法是對(duì)合算法,工程上實(shí)現(xiàn)比較容易。DES算法中除了S盒是非線性變換外,其余變換都是線性變換,因此DES算法的安全關(guān)鍵在于S盒,其本質(zhì)是數(shù)據(jù)壓縮,把6位的數(shù)據(jù)壓縮為4位數(shù)據(jù)。此外,S盒和置換P相互結(jié)合,具有較強(qiáng)的抗差分攻擊和抗線性攻擊能力。DES的子密鑰產(chǎn)生和使用能確保原密鑰的各位的使用次數(shù)基本相等,這也使得DES的保密性得到進(jìn)一步的增強(qiáng)。DES算法的加密過(guò)程經(jīng)過(guò)了三個(gè)階段:首先,64位的明文在一個(gè)初始置換后,比特重排產(chǎn)生了經(jīng)過(guò)置換的輸入,明文組被分成右半部分和左半部分,每部分32位,以和表示。接下來(lái)的階段是由對(duì)同一個(gè)函數(shù)進(jìn)行16次循環(huán)組成的,16輪迭代稱(chēng)為乘積變
34、換或函數(shù)。這個(gè)函數(shù)本身既包含換位又包含代替函數(shù),將數(shù)據(jù)和密鑰結(jié)合起來(lái),最后1輪的輸出由64位組成,其左邊和右邊兩個(gè)部分經(jīng)過(guò)交換后得到預(yù)輸出。最后階段,預(yù)輸出通過(guò)一個(gè)逆初始置換算法就生成了64位的密文結(jié)果。DES的加密過(guò)程可簡(jiǎn)單描述為三個(gè)階段:DES的解密算法與加密算法共用相同的算法過(guò)程,即使用相同的方法完成加密和解密,兩者的不同之處僅在于解密時(shí)子密鑰Ki的使用順序與加密時(shí)相反。相對(duì)應(yīng)的DES的解密過(guò)程由于DES的運(yùn)算是對(duì)合運(yùn)算,所以解密和加密可共用同一個(gè)運(yùn)算,只是子密鑰的使用的順序不同。解密過(guò)程可用如下的數(shù)學(xué)公式表示:2.5 DES算法流程: 圖(1) DES算法的整體結(jié)構(gòu)圖圖(2) DES算
35、法的迭代過(guò)程圖2.6.DES核心代碼分析: 下面根據(jù)具體情況確定要執(zhí)行哪種置換,前面已經(jīng)定義了所要用到的幾種置換:IP變換,IP-1變換,f變換,擴(kuò)展變換,P變換以及S盒結(jié)構(gòu)。void keyfc(char *In) /獲取密鑰函數(shù)此函數(shù)的功能是由64比特的密鑰產(chǎn)生16個(gè)子密鑰ki。首先將密鑰字節(jié)組key8轉(zhuǎn)換為64比特的位組,然后進(jìn)行密鑰變換置換后得到56比特的密鑰,把變換后的密鑰等分成兩部分,之后進(jìn)行循環(huán)左移運(yùn)算void DES(char Out8,char In8,bool MS)/加密核心程序,ms=0時(shí)加密,反之解密bool MW64,tmp32,PMW64;/注意指針bool kz
36、mw48,keytem48,ss32;int hang,lie;ByteToBit(PMW,In,64);for(int j=0;j64;j+)MWj=PMWipj-1; /初始置換bool *Li=&MW0,*Ri=&MW32;for(int i=0;i48;i+)/右明文擴(kuò)展置換kzmwi=Rieii-1;/注意指針/擴(kuò)展置換表,作用是將32比特的輸入擴(kuò)展為48比特t static char ei = /擴(kuò)展置換 32, 1, 2, 3, 4, 5,4, 5, 6, 7, 8, 9,8, 9, 10, 11, 12, 13, 12, 13, 14, 15, 16, 17, 16, 17,
37、18, 19, 20, 21, 20, 21, 22, 23, 24, 25, 24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32, 1;/加密階段的初始置換IPconst static char ip = /IP初始置換 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 2
38、7, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7; xor()此函數(shù)的功能是進(jìn)行異或運(yùn)算,異或運(yùn)算是按位作不進(jìn)位加法運(yùn)算。void Xor(bool *InA,const bool *InB,int len) /按位異或for(int i=0;ilen;i+)InAi=InBi;ByteToBit()此函數(shù)的功能是將輸入的字節(jié)組轉(zhuǎn)換為位組。void ByteToBit(bool *Out,char *In,int bits)/字節(jié)到位的轉(zhuǎn)換int i;for(i=0;i(i%8)&1;BitTo
39、Byte()此函數(shù)的功能是將位組轉(zhuǎn)換字節(jié)組。void BitToByte(char *Out,bool *In,int bits)/位到字節(jié)轉(zhuǎn)換for(int i=0;ibits/8;i+)Outi=0;for(i=0;ibits;i+)Outi/8|=Ini(i%8);/|=組合了位操作符和賦值操作符的功能加密過(guò)程最后階段預(yù)輸出通過(guò)一個(gè)逆初始置換算法就生成了64位的密文結(jié)果。const static char fp = /IP逆初始置換 40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, 38, 6, 46, 14, 5
40、4, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, 34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25;此主函數(shù)貫穿整個(gè)函數(shù)。首先是初設(shè)密鑰,然后調(diào)用密鑰設(shè)置函數(shù)和DES算法的運(yùn)行函數(shù),最后得出密文以及解密后的文字。void main()char Ki8,jm8,final8;int i0;cout請(qǐng)輸入密鑰(8字節(jié)):endl;for(i0=0;i0Kii0;ke
41、yfc(Ki);cout請(qǐng)輸入明文:endl;for(i0=0;i0jmi0;DES(final,jm,0);/加密for(i0=0;i08;i0+)coutfinali0; coutendl;DES(jm,final,1);/解密for(i0=0;i08;i0+) coutjmi0;coutendl;具體代碼和注釋在代碼中都有詳細(xì)介紹。2.7.DES運(yùn)行結(jié)果:2.8.DES安全分析:DES算法具有極高安全性,最初,除了用窮舉搜索法對(duì)DES算法進(jìn)行攻擊外,并沒(méi)有發(fā)現(xiàn)更有效的辦法。而56位長(zhǎng)的密鑰的窮舉空間為256,這意味著如果一臺(tái)計(jì)算機(jī)的速度是每一秒種檢測(cè)一百萬(wàn)個(gè)密鑰,則它搜索完全部密鑰就需要
42、將近2285年的時(shí)間,可見(jiàn),這是難以實(shí)現(xiàn)的,當(dāng)然,隨著科學(xué)技術(shù)的發(fā)展,當(dāng)出現(xiàn)超高速計(jì)算機(jī)后,我們可考慮把DES密鑰的長(zhǎng)度再增長(zhǎng)一些,以此來(lái)達(dá)到更高的保密程度。DES在總體上應(yīng)該說(shuō)是極其成功的,但在安全上也有其不足之處:(1)密鑰太短:IBM原來(lái)的Lucifer算法的密鑰長(zhǎng)度是128位,而DES采用的是56位,這顯然太短了。1998年7月17日美國(guó)EEF(Electronic Frontier Founation)宣布,他們用一臺(tái)價(jià)值25萬(wàn)美元的改裝計(jì)算機(jī),只用了56個(gè)小時(shí)就窮舉出一個(gè)DES密鑰。1999年EFF將該窮舉速度提高到24小時(shí)。(2)存在互補(bǔ)對(duì)稱(chēng)性:將密鑰的每一位取反。用原來(lái)的密鑰加
43、密已知明文得到密文分組,那么用此密鑰的補(bǔ)密鑰加密此明文的補(bǔ)便可得到密文分組的補(bǔ)。這表明,對(duì)DES的選擇明文攻擊僅需要測(cè)試一半的密鑰,從而窮舉攻擊的工作量也就減半。除了上述兩點(diǎn)之外,DES的半公開(kāi)性也是人們對(duì)DES頗有微辭的地方。在DES算法作為一個(gè)標(biāo)準(zhǔn)時(shí),曾出現(xiàn)過(guò)許多的批評(píng),其中之一就是針對(duì)S盒的。DES里的所有計(jì)算,除去S盒全是線性的,也就是說(shuō),計(jì)算兩個(gè)輸出的異或與先將兩個(gè)對(duì)應(yīng)輸入異或再計(jì)算其輸出是相同的。作為非線性部件,S盒針對(duì)密碼體制的安全性至關(guān)重要。在算法提出時(shí),就有人懷疑S盒隱藏了“陷門(mén)”。而美國(guó)國(guó)家安全局能夠輕易的解密消息,同時(shí)還能宣稱(chēng)DES算法是“安全”的。當(dāng)然無(wú)法否認(rèn)這一猜測(cè),
44、然而到目前為止,并沒(méi)有任何證據(jù)證明DES里的確存在陷門(mén)。事實(shí)上,后來(lái)表明DES里的S盒是被設(shè)計(jì)成能夠防止某些類(lèi)型的攻擊的。在20世紀(jì)90年代初,Biham與Shamir發(fā)現(xiàn)差分分析時(shí),美國(guó)國(guó)家安全局就已承認(rèn)某些未公布的S盒設(shè)計(jì)原則正是為了使得差分密碼分析變得不可行。事實(shí)上,差分密碼分析在DES最初被研發(fā)時(shí)就已成為IBM的研究者所知,但這種方法卻被保留了將近20年,直到Biham與Shamir又獨(dú)立地發(fā)現(xiàn)了這種攻擊。對(duì)DES算法最中肯的批評(píng)是,密鑰太短。DES算法中只用到64位密鑰中的其中56位,第8、16、24、.64位8個(gè)位并未參與DES運(yùn)算,而是用作奇偶校驗(yàn)。在所有的密鑰空間中有極少量的弱
45、密鑰,如全0和全F的密鑰等,在選擇時(shí)應(yīng)盡量避免。這一點(diǎn),向我們提出了一個(gè)應(yīng)用上的要求,即DES的安全性是基于除了8,16,24,.64位外的其余56位的組合變化256才得以保證的。因此,在實(shí)際應(yīng)用中,我們應(yīng)避開(kāi)使用第8,16,24,.64位作為有效數(shù)據(jù)位,而使用其它的56位作為有效數(shù)據(jù)位,才能保證DES算法安全可靠地發(fā)揮作用。如果不了解這一點(diǎn),把密鑰Key的8,16,24,. .64位作為有效數(shù)據(jù)使用,將不能保證DES加密數(shù)據(jù)的安全性,對(duì)運(yùn)用DES來(lái)達(dá)到保密作用的系統(tǒng)產(chǎn)生數(shù)據(jù)被破譯的危險(xiǎn),這正是DES算法在應(yīng)用上的誤區(qū),留下了被人攻擊、被人破譯的極大隱患??傊?,DES密鑰太短,超期服役的時(shí)間也
46、太長(zhǎng)。新的攻擊手段不斷出現(xiàn),DES以面臨實(shí)實(shí)在在的威脅。直接的威脅還是在于專(zhuān)用設(shè)備,由于芯片的速度越來(lái)越快,造價(jià)越來(lái)越便宜,導(dǎo)致專(zhuān)用設(shè)備的造價(jià)也大大的降低。DES算法除了差分密碼分析另外兩種最重要的密碼攻擊是窮盡密鑰搜索和線性密碼分析。對(duì)DES算法而言,線性攻擊更有效。在1994年,一個(gè)實(shí)際的線性密碼分析由其發(fā)明者M(jìn)atsui提出。這是一個(gè)使用243對(duì)明文-密文,又用了40天來(lái)找到密鑰。這個(gè)密碼分析并未對(duì)DES的安全性產(chǎn)生實(shí)際影響,由于這個(gè)攻擊需要數(shù)目極大的明-密文對(duì),在現(xiàn)實(shí)世界中一個(gè)敵手很難積攢下用同一密鑰加密的如此眾多的明-密文對(duì)。 雖然DES加密算法已經(jīng)過(guò)時(shí),但它的基本理論和設(shè)計(jì)思想仍有
47、重要參考價(jià)值。三大素?cái)?shù)密碼算法RSA3.1.實(shí)驗(yàn)內(nèi)容:用高級(jí)語(yǔ)言實(shí)現(xiàn)Solovay-Strassen素性測(cè)試法或Miller-Rabin素性測(cè)試法并且要求用代碼實(shí)現(xiàn)RSA的加解密過(guò)程。3.2.實(shí)驗(yàn)?zāi)康模?進(jìn)一步掌握大素?cái)?shù)分解的一般原理和實(shí)現(xiàn)方法,并且對(duì)RSA加密算法的安全性進(jìn)行分析了解。3.3.需求分析: 當(dāng)前最著名、應(yīng)用最廣泛的公鑰系統(tǒng)RSA是在1978年由美國(guó)麻省理工學(xué)院(MIT)的Rivest、Shamir和Adleman在題為獲得數(shù)字簽名和公開(kāi)鑰密碼系統(tǒng)的方法的論文中提出的。RSA系統(tǒng)是公鑰系統(tǒng)的最具有典型意義的方法,大多數(shù)使用公鑰密碼進(jìn)行加密和數(shù)字簽名的產(chǎn)品和標(biāo)準(zhǔn)使用的都是RSA算法
48、。它是一個(gè)基于數(shù)論的非對(duì)稱(chēng)(公開(kāi)鑰)密碼體制,是一種分組密碼體制。其名稱(chēng)來(lái)自于三個(gè)發(fā)明者的姓名首字母。 它的安全性是基于大整數(shù)素因子分解的困難性,而大整數(shù)因子分解問(wèn)題是數(shù)學(xué)上的著名難題,至今沒(méi)有有效的方法予以解決,因此可以確保RSA算法的安全性。素?cái)?shù)問(wèn)題是一個(gè)使很多數(shù)學(xué)家著迷的問(wèn)題。素?cái)?shù)就是一個(gè)除了l和它自身以外不能被其它數(shù)整除的數(shù)。素?cái)?shù)的一個(gè)基本問(wèn)題是如何有效地確定一個(gè)數(shù)是否是一個(gè)素?cái)?shù),即素性測(cè)試問(wèn)題。素性測(cè)試問(wèn)題不僅在數(shù)學(xué)上是一個(gè)有挑戰(zhàn)性的問(wèn)題,而且在實(shí)際應(yīng)用中也是非常重要的。在現(xiàn)代密碼系統(tǒng)中,大素?cái)?shù)的判別和尋找對(duì)一些加密系統(tǒng)的建立起著關(guān)鍵作用。很多公鑰密碼算法都用到素?cái)?shù),特別是160位(
49、二進(jìn)制)以上的大素?cái)?shù)。RSA的公共模數(shù)就是兩個(gè)5 12位以上的大素?cái)?shù)的乘積;由此可見(jiàn)對(duì)大數(shù)進(jìn)行的素性判斷的重要性。判定一個(gè)整數(shù)是否是素?cái)?shù),最為簡(jiǎn)單的想法是直接利用素?cái)?shù)的定義,用比要判斷的整數(shù)小的素?cái)?shù)去一一試除,如果能整除被檢測(cè)的數(shù)的話,那就能確定無(wú)疑為合數(shù)了但是對(duì)于大素?cái)?shù)來(lái)說(shuō),由于計(jì)算量太大,根本無(wú)法實(shí)現(xiàn)以用于具體應(yīng)用。所以科學(xué)家們根據(jù)素?cái)?shù)判斷的理論發(fā)明了許多新的算法,提高了判斷一個(gè)大數(shù)是否是一個(gè)大素?cái)?shù)的效率。由于素?cái)?shù)在正整數(shù)序列中分布不規(guī)則,無(wú)法用公式直接計(jì)算出一個(gè)指定長(zhǎng)度的大素?cái)?shù),所以當(dāng)前采用的方法是隨機(jī)產(chǎn)生一個(gè)大整數(shù),再對(duì)其做素性檢測(cè).常見(jiàn)的素性檢測(cè)法有 MillerRabin 檢測(cè)、
50、Solovay - Strassen 檢測(cè)法和 Lehman 檢測(cè)法.目前,提高素?cái)?shù)生成速度的方法是用 100 以內(nèi)的小素?cái)?shù)首先進(jìn)行篩選這是因?yàn)榕袛啻笳麛?shù)能否被小素?cái)?shù)整除的時(shí)間要比各種概率測(cè)試法短得多,一般說(shuō)來(lái),這種篩選可以排除大整數(shù)不是素?cái)?shù) 769毛的可能性;之后再進(jìn)行 5 次 MillerRabin 檢測(cè),那么這個(gè)大數(shù)不是素?cái)?shù)的概率就會(huì)降到1/1 000 以下,這樣就加快了大素?cái)?shù)生成的速度.RSA算法是第一個(gè)既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法,因此它為公用網(wǎng)絡(luò)上信息的加密和鑒別提供了一種基本的方法。雖然自1978年提出以來(lái),RSA的安全性一直未能得到理論上的證明,但它經(jīng)歷了各種攻擊,至
51、今(2006年)未被完全攻破。隨著越來(lái)越多的商業(yè)應(yīng)用和標(biāo)準(zhǔn)化工作,RSA已經(jīng)成為最具代表性的公鑰加密技術(shù)。VISA、MasterCard、IBM、Microsoft等公司協(xié)力制定的安全電子交易標(biāo)準(zhǔn)(Secure Electronic Transactions,SET)就采用了標(biāo)準(zhǔn)RSA算法,這使得RSA在我們的生活中幾乎無(wú)處不在。網(wǎng)上交易加密連接、網(wǎng)上銀行身份驗(yàn)證、各種信用卡使用的數(shù)字證書(shū)、智能移動(dòng)電話和存儲(chǔ)卡的驗(yàn)證功能芯片等,大多數(shù)使用RSA技術(shù)。3.4. 程序流程圖: Rabin Miller素?cái)?shù)檢驗(yàn)算法流程圖 RSA的加密流程圖3.5. 算法實(shí)現(xiàn):3.5.1 Miller-Rabin素性測(cè)試法3.5.1.1算法描述: Miller-Rabin算法是基于Gary Miller的部分象法,由Michael Rabin發(fā)展。更多的人叫它“測(cè)試”,因?yàn)橥ㄟ^(guò)Miller-Rabin測(cè)試的并不一定就是素?cái)?shù),非素?cái)?shù)通過(guò)測(cè)試的概率是1/4。Rabin Miller算法是一個(gè)概率算法,一輪 Rabin Miller 算法的最壞情況時(shí)間復(fù)雜度為(1+O(1)log2 (n)(以模n 乘 法為基本操作)。如果以單精度乘法操作作為時(shí)間復(fù)雜度的衡量,則一輪優(yōu)化的 Rabin Miller算法的最
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鞋子工廠供貨合同范本
- 合伙生意協(xié)議合同范本
- 合作研發(fā)合同范本
- 合伙投資工地協(xié)議合同范本
- 變更工商合同范本
- 合同范本結(jié)婚
- 合同范本此致
- 合同范本鄭州
- 出口材料貿(mào)易合同范本
- 使用物質(zhì)合同范例
- 2025年買(mǎi)賣(mài)雙方合同模板
- 最專(zhuān)業(yè)的企業(yè)介紹模板課件
- 2025國(guó)家電投集團(tuán)資本控股限公司本部招聘11人高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 2025年湖南中醫(yī)藥高等專(zhuān)科學(xué)校高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2024新版人教PEP英語(yǔ)(2025春)七年級(jí)下冊(cè)教學(xué)課件:Unit2 Reading Plus
- 2025年山東司法警官職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 2024年05月湖南招商銀行長(zhǎng)沙分行長(zhǎng)期社會(huì)招考筆試歷年參考題庫(kù)附帶答案詳解
- 鐵路信號(hào)基礎(chǔ)設(shè)備維護(hù)(第二版) 課件 項(xiàng)目一 信號(hào)繼電器檢修
- 2025新人教版英語(yǔ)七年級(jí)下單詞英譯漢默寫(xiě)表(小學(xué)部分)
- 江蘇省南京市2024年中考英語(yǔ)試題(含解析)
- 2025年匯成集團(tuán)招聘筆試參考題庫(kù)含答案解析
評(píng)論
0/150
提交評(píng)論