




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《信息安全與密碼學(xué)》實(shí)驗(yàn)報(bào)告姓名:學(xué)號(hào):學(xué)院:班級(jí):成績(jī):2023年12月31日目錄密碼體制令。對(duì),任意,定義以及若取,則此密碼體制通常叫做凱撒密碼(CaesarCipher),由于它一方面為儒勒·凱撒所使用。使用移位密碼可以用來(lái)加密普通的英文句子,但是一方面必須建立英文字母和模26剩余之間的一一相應(yīng)關(guān)系:如。將其列表如下:ABCDEFGHIJKLM0123456789101112NOPQRSTUVWXYZ13141516171819202122232425usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespacemimaxue46.FormsClass{publicpartialclassyiwei:Form{publicyiwei(){InitializeComponent();}privatevoidtextBox1_KeyPress(objectsender,KeyPressEventArgse){}privatevoidbutton1_Click(objectsender,EventArgse){textBox3.Clear();string[]aa=newstring[26];aa[0]="a";aa[1]="b";aa[2]="c";aa[3]="d";aa[4]="e";aa[5]="f";aa[6]="g";aa[7]="h";aa[8]="i";aa[9]="j";aa[10]="k";aa[11]="l";aa[12]="m";aa[13]="n";aa[14]="o";aa[15]="p";aa[16]="q";aa[17]="r";aa[18]="s";aa[19]="t";aa[20]="u";aa[21]="v";aa[22]="w";aa[23]="x";aa[24]="y";aa[25]="z";string[]aa2=newstring[26];aa2[0]="A";aa2[1]="B";aa2[2]="C";aa2[3]="D";aa2[4]="E";aa2[5]="F";aa2[6]="G";aa2[7]="H";aa2[8]="I";aa2[9]="J";aa2[10]="K";aa2[11]="L";aa2[12]="M";aa2[13]="N";aa2[14]="O";aa2[15]="P";aa2[16]="Q";aa2[17]="R";aa2[18]="S";aa2[19]="T";aa2[20]="U";aa2[21]="V";aa2[22]="W";aa2[23]="X";aa2[24]="Y";aa2[25]="Z";try{#regioninta=Convert.ToInt16(textBox1.Text);stringtx=textBox2.Text;intle=tx.Length;int[]bb=newint[le];string[]txt=newstring[le];for(inti=0;i<le;i++){txt[i]=tx[i].ToString();}//獲得明文string[]txt2=newstring[le];for(intj=0;j<le;j++){for(intm=0;m<26;m++){if(txt[j]==aa[m]){bb[j]=(m+a)%26;txt2[j]=aa2[bb[j]];}}}//獲得密文stringtx2="";for(intn=0;n<le;n++){tx2+=txt2[n];}textBox3.Text=tx2;#endregion}catch{MessageBox.Show("請(qǐng)輸入對(duì)的格式的秘鑰以及明文");}}privatevoidbutton2_Click(objectsender,EventArgse){textBox6.Clear();string[]aa=newstring[26];aa[0]="a";aa[1]="b";aa[2]="c";aa[3]="d";aa[4]="e";aa[5]="f";aa[6]="g";aa[7]="h";aa[8]="i";aa[9]="j";aa[10]="k";aa[11]="l";aa[12]="m";aa[13]="n";aa[14]="o";aa[15]="p";aa[16]="q";aa[17]="r";aa[18]="s";aa[19]="t";aa[20]="u";aa[21]="v";aa[22]="w";aa[23]="x";aa[24]="y";aa[25]="z";string[]aa2=newstring[26];aa2[0]="A";aa2[1]="B";aa2[2]="C";aa2[3]="D";aa2[4]="E";aa2[5]="F";aa2[6]="G";aa2[7]="H";aa2[8]="I";aa2[9]="J";aa2[10]="K";aa2[11]="L";aa2[12]="M";aa2[13]="N";aa2[14]="O";aa2[15]="P";aa2[16]="Q";aa2[17]="R";aa2[18]="S";aa2[19]="T";aa2[20]="U";aa2[21]="V";aa2[22]="W";aa2[23]="X";aa2[24]="Y";aa2[25]="Z";try{inta=Convert.ToInt16(textBox4.Text);stringtx=textBox5.Text;intle=tx.Length;string[]txt=newstring[le];for(inti=0;i<le;i++){txt[i]=tx[i].ToString();}//獲得密文string[]txt2=newstring[le];for(intj=0;j<le;j++){for(intm=0;m<26;m++){if(txt[j]==aa2[m]){intn=m-a;if(n<=0){n=n+26;txt2[j]=aa[n%26];}else{txt2[j]=aa[n%26];}}}}stringtx2="";for(intn=0;n<le;n++){tx2+=txt2[n];}textBox6.Text=tx2;}catch{MessageBox.Show("請(qǐng)輸入對(duì)的的秘鑰以及密文");}}}}在置換密碼的情形下,我們也可以認(rèn)為和是26個(gè)英文字母。在移位密碼中使用是由于加密和解密都是代數(shù)運(yùn)算。但是在置換密碼的情形下,可更簡(jiǎn)樸的將加密和解密過(guò)程直接看作是一個(gè)字母表上的置換。任取一置換,便可得到一加密函數(shù),見(jiàn)下表(小寫(xiě)字母表達(dá)明文,大寫(xiě)字母表達(dá)密文):abcdefghijklmXNYAHPOGZQWBTnopqrstuvwxyzSFLRCVMUEKJDI按照上表應(yīng)有,,等等。解密函數(shù)是相應(yīng)的逆置換。由下表給出:ABCDEFGHIJKLMdlryvohEzxwptNOPQRSTUVWXYZbgfjqnmUskaci因此,,,等等。置換密碼的一個(gè)密鑰剛好相應(yīng)于26個(gè)英文字母的一種置換。所有也許的置換有26!種,這個(gè)數(shù)值超過(guò),是一個(gè)很大的數(shù)。因此,采用窮盡密鑰搜索的襲擊方法,即使使用計(jì)算機(jī),也是計(jì)算上不可行的。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespacemimaxue46.FormsClass{publicpartialclasszhihuan:Form{publiczhihuan(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){textBox2.Clear();string[]aa=newstring[26];aa[0]="a";aa[1]="b";aa[2]="c";aa[3]="d";aa[4]="e";aa[5]="f";aa[6]="g";aa[7]="h";aa[8]="i";aa[9]="j";aa[10]="k";aa[11]="l";aa[12]="m";aa[13]="n";aa[14]="0";aa[15]="p";aa[16]="q";aa[17]="r";aa[18]="s";aa[19]="t";aa[20]="u";aa[21]="v";aa[22]="w";aa[23]="x";aa[24]="y";aa[25]="z";string[]bb=newstring[26];bb[0]="X";bb[1]="N";bb[2]="Y";bb[3]="A";bb[4]="H";bb[5]="P";bb[6]="O";bb[7]="G";bb[8]="Z";bb[9]="Q";bb[10]="W";bb[11]="B";bb[12]="T";bb[13]="S";bb[14]="F";bb[15]="L";bb[16]="R";bb[17]="C";bb[18]="V";bb[19]="M";bb[20]="U";bb[21]="E";bb[22]="K";bb[23]="J";bb[24]="D";bb[25]="I";//設(shè)立密碼加密表stringtx=textBox1.Text;intle=tx.Length;string[]txt=newstring[le];for(intm=0;m<le;m++){txt[m]=tx[m].ToString();}//明文string[]txt2=newstring[le];for(inti=0;i<le;i++){for(intj=0;j<26;j++){if(txt[i]==aa[j]){txt2[i]=bb[j];}}}//密文stringtx2="";for(inti=0;i<txt2.Length;i++){tx2+=txt2[i];}this.textBox2.Text=tx2;}//還可以使用listprivatevoidtextBox1_TextChanged(objectsender,EventArgse){}privatevoidtextBox2_TextChanged(objectsender,EventArgse){}privatevoidbutton2_Click(objectsender,EventArgse){string[]aa=newstring[26];aa[0]="a";aa[1]="b";aa[2]="c";aa[3]="d";aa[4]="e";aa[5]="f";aa[6]="g";aa[7]="h";aa[8]="i";aa[9]="j";aa[10]="k";aa[11]="l";aa[12]="m";aa[13]="n";aa[14]="0";aa[15]="p";aa[16]="q";aa[17]="r";aa[18]="s";aa[19]="t";aa[20]="u";aa[21]="v";aa[22]="w";aa[23]="x";aa[24]="y";aa[25]="z";string[]bb=newstring[26];bb[0]="X";bb[1]="N";bb[2]="Y";bb[3]="A";bb[4]="H";bb[5]="P";bb[6]="O";bb[7]="G";bb[8]="Z";bb[9]="Q";bb[10]="W";bb[11]="B";bb[12]="T";bb[13]="S";bb[14]="F";bb[15]="L";bb[16]="R";bb[17]="C";bb[18]="V";bb[19]="M";bb[20]="U";bb[21]="E";bb[22]="K";bb[23]="J";bb[24]="D";bb[25]="I";stringtx=textBox3.Text;intle=tx.Length;string[]txt=newstring[le];for(inti=0;i<le;i++){txt[i]=tx[i].ToString();}//密文string[]txt2=newstring[le];for(intj=0;j<le;j++){for(intm=0;m<26;m++){if(txt[j]==bb[m]){txt2[j]=aa[m];}}}//獲得明文stringtx2="";for(intn=0;n<le;n++){tx2+=txt2[n];}textBox4.Text=tx2;}}}密碼體制設(shè)是一個(gè)正整數(shù)。定義。對(duì)任意的密鑰,定義:和以上所有的運(yùn)算都是在上進(jìn)行。使用前面所述的方法,相應(yīng),則每個(gè)密鑰相稱(chēng)于一個(gè)長(zhǎng)度為的字母串,稱(chēng)為密鑰字。維吉尼亞密碼一次加密個(gè)明文字母。例假設(shè),密鑰字為CIPHER,其相應(yīng)于如下的數(shù)字串K=(2,8,15,7,4,17)。要加密的明文為:thiscryptosystemisnotsecure將明文串轉(zhuǎn)化為相應(yīng)的數(shù)字,每六個(gè)為一組,使用密鑰字進(jìn)行模26下的加密運(yùn)算如下所示:19781821724151914182418192815741728157417282115232568023821221520141281813141918422017415741728157417281519191291522825819222519則相應(yīng)的密文應(yīng)當(dāng)為:VPXZGIAXIVWPUBTTMJPWIZITWZT解密時(shí),使用相同的密鑰字,進(jìn)行逆運(yùn)算即可。維吉尼亞密碼的密鑰空間大小為,所以即使的值很小,使用窮盡密鑰搜索方法也需要很長(zhǎng)的時(shí)間。例如,當(dāng)時(shí),密鑰空間大小超過(guò),這樣的密鑰量已經(jīng)超過(guò)了使用手算進(jìn)行窮盡搜索的能力范圍(當(dāng)然使用計(jì)算機(jī)另當(dāng)別論)。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespacemimaxue46.FormsClass{publicpartialclassweijiniya:Form{publicweijiniya(){InitializeComponent();}privatevoidweijiniya_Load(objectsender,EventArgse){}privatevoidbutton1_Click(objectsender,EventArgse){}privatevoidbutton1_Click_1(objectsender,EventArgse){#regiontextBox3.Clear();string[]aa=newstring[26];aa[0]="a";aa[1]="b";aa[2]="c";aa[3]="d";aa[4]="e";aa[5]="f";aa[6]="g";aa[7]="h";aa[8]="i";aa[9]="j";aa[10]="k";aa[11]="l";aa[12]="m";aa[13]="n";aa[14]="o";aa[15]="p";aa[16]="q";aa[17]="r";aa[18]="s";aa[19]="t";aa[20]="u";aa[21]="v";aa[22]="w";aa[23]="x";aa[24]="y";aa[25]="z";string[]bb=newstring[26];bb[0]="A";bb[1]="B";bb[2]="C";bb[3]="D";bb[4]="E";bb[5]="F";bb[6]="G";bb[7]="H";bb[8]="I";bb[9]="J";bb[10]="K";bb[11]="L";bb[12]="M";bb[13]="N";bb[14]="O";bb[15]="P";bb[16]="Q";bb[17]="R";bb[18]="S";bb[19]="T";bb[20]="U";bb[21]="V";bb[22]="W";bb[23]="X";bb[24]="Y";bb[25]="Z";#endregiontry{#region秘鑰stringtx=textBox1.Text;intle=tx.Length;string[]txt=newstring[le];int[]txt2=newint[le];for(inti=0;i<le;i++){txt[i]=tx[i].ToString();}for(inti=0;i<le;i++){for(intj=0;j<26;j++){if(txt[i]==bb[j]){txt2[i]=j;}}}#endregion#region明文stringtx2=textBox2.Text;intle2=tx2.Length;string[]txt3=newstring[le2];int[]txt4=newint[le2];for(inti=0;i<le2;i++){txt3[i]=tx2[i].ToString();}for(inti=0;i<le2;i++){for(intj=0;j<26;j++){if(txt3[i]==aa[j]){txt4[i]=j;}}}#endregion#region加密int[]txt5=newint[le2];intm=le2/le;//得到明文的整數(shù)組的個(gè)數(shù)for(inti=0;i<(m+1);i++){for(intj=0;j<le;j++){if((j+i*le)<le2){txt5[j+i*le]=(txt4[j+i*le]+txt2[j])%26;}}}#endregion#region密文顯示string[]txt6=newstring[le2];for(inti=0;i<le2;i++){txt6[i]=bb[txt5[i]];}stringtx7="";for(inti=0;i<le2;i++){tx7+=txt6[i];}textBox3.Text=tx7;#endregion}catch{MessageBox.Show("請(qǐng)輸入對(duì)的的秘鑰及明文");}}privatevoidbutton2_Click(objectsender,EventArgse){#regiontextBox6.Clear();string[]aa=newstring[26];aa[0]="a";aa[1]="b";aa[2]="c";aa[3]="d";aa[4]="e";aa[5]="f";aa[6]="g";aa[7]="h";aa[8]="i";aa[9]="j";aa[10]="k";aa[11]="l";aa[12]="m";aa[13]="n";aa[14]="o";aa[15]="p";aa[16]="q";aa[17]="r";aa[18]="s";aa[19]="t";aa[20]="u";aa[21]="v";aa[22]="w";aa[23]="x";aa[24]="y";aa[25]="z";string[]bb=newstring[26];bb[0]="A";bb[1]="B";bb[2]="C";bb[3]="D";bb[4]="E";bb[5]="F";bb[6]="G";bb[7]="H";bb[8]="I";bb[9]="J";bb[10]="K";bb[11]="L";bb[12]="M";bb[13]="N";bb[14]="O";bb[15]="P";bb[16]="Q";bb[17]="R";bb[18]="S";bb[19]="T";bb[20]="U";bb[21]="V";bb[22]="W";bb[23]="X";bb[24]="Y";bb[25]="Z";#endregiontry{#region秘鑰stringtx=textBox4.Text;intle=tx.Length;string[]txt=newstring[le];int[]txt2=newint[le];for(inti=0;i<le;i++){txt[i]=tx[i].ToString();}for(inti=0;i<le;i++){for(intj=0;j<26;j++){if(txt[i]==bb[j]){txt2[i]=j;}}}#endregion#region密文stringtx2=textBox5.Text;intle2=tx2.Length;string[]txt3=newstring[le2];int[]txt4=newint[le2];for(inti=0;i<le2;i++){txt3[i]=tx2[i].ToString();}for(inti=0;i<le2;i++){for(intj=0;j<26;j++){if(txt3[i]==bb[j]){txt4[i]=j;}}}#endregion#region解密int[]txt5=newint[le2];intm=le2/le;//得到密文的整數(shù)組的個(gè)數(shù)for(inti=0;i<(m+1);i++){for(intj=0;j<le;j++){if((j+i*le)<le2){intn=(txt4[j+i*le]-txt2[j])%26;if(n<0){txt5[j+i*le]=(n+26)%26;}else{txt5[j+i*le]=n%26;}}}}#endregion#region明文顯示string[]txt6=newstring[le2];for(inti=0;i<le2;i++){txt6[i]=aa[txt5[i]];}stringtx7="";for(inti=0;i<le2;i++){tx7+=txt6[i];}textBox6.Text=tx7;#endregion}catch{MessageBox.Show("請(qǐng)輸入對(duì)的格式的秘鑰及密文");}}}}設(shè)為正整數(shù),是三個(gè)整數(shù),假如整數(shù)滿足,則設(shè)反復(fù)運(yùn)用,可以得到直到則等于最大的非零余數(shù)例如usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespacemimaxue46.FormsClass{publicpartialclassEliud:Form{publicEliud(){InitializeComponent();}privatevoidtextBox1_TextChanged(objectsender,EventArgse){}privatevoideulid(TextBoxtextbox1,TextBoxtextbox2){inta,b,r;r=1;try{a=Convert.ToInt16(textBox1.Text);b=Convert.ToInt16(textBox2.Text);while(r!=0){r=a%b;a=b;b=r;}textBox3.Text=Convert.ToString(a);}catch{MessageBox.Show("請(qǐng)對(duì)的輸入數(shù)字");}}privatevoidbutton1_Click(objectsender,EventArgse){//r=a/b;這是求解整數(shù)商部分eulid(textBox1,textBox2);}}}假如整數(shù)和不都為0,那么存在整數(shù)和滿足假如,則在模下有乘法逆元,即存在一個(gè)滿足用擴(kuò)展歐幾里得算法先求出,當(dāng)時(shí),則返回的值就是的乘法逆元。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespacemimaxue46.FormsClass{publicpartialclassExtendEliud:Form{publicExtendEliud(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){try{inta=Convert.ToInt32(textBox1.Text);intb=Convert.ToInt32(textBox2.Text);intx=1;inty=0;ints=1;intr=0;intg=a;intt=b;intq,u,v,w;if(a>=b&&b>0){while(t>0){q=g/t;u=x-q*r;v=y-q*s;w=g-q*t;x=r;y=s;g=t;r=u;s=v;t=w;}textBox3.Text=Convert.ToString(g);textBox4.Text=Convert.ToString(x);textBox5.Text=Convert.ToString(y);}else{MessageBox.Show("請(qǐng)保證a>=b>0");}}catch{MessageBox.Show("請(qǐng)輸入對(duì)的格式的數(shù)字");}}}}素?cái)?shù)的定義,當(dāng)一個(gè)數(shù)只能被1和自身整除時(shí),這個(gè)數(shù)是素?cái)?shù)。古希臘數(shù)學(xué)家Eratosthenes(公元前276~公元前195)發(fā)現(xiàn)了一種找出不超過(guò)一個(gè)給定正整數(shù)的所有素?cái)?shù)的方法,稱(chēng)為Eratosthenes篩法(Sieve
of
Eratosthenes)。所謂篩法就是將不合條件的整數(shù)篩掉,而將符合條件的整數(shù)“捉住”。Eratosthenes篩法篩選由大于1并且小于或等于n的所有自然數(shù)組成的數(shù)列。一方面取第一個(gè)素?cái)?shù)2,劃去所有除2以外的2的倍數(shù)。在余下的正整數(shù)中,大于剛剛?cè)〉降乃財(cái)?shù)2的第一個(gè)正整數(shù),即正整數(shù)3被認(rèn)定為素?cái)?shù),其倍數(shù)(不涉及自身)同樣從數(shù)列中劃去。這一過(guò)程連續(xù)到找到一個(gè)大于nn的素?cái)?shù)為止usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespacemimaxue46.FormsClass{publicpartialclassSuxingjianYan:Form{publicSuxingjianYan(){InitializeComponent();}privatevoideulid(intn,inta){intr;r=1;a=n/2;while(r!=0){r=n%a;n=a;a=r;}}privatevoidbutton1_Click(objectsender,EventArgse){#regioninta=Convert.ToInt32(textBox1.Text);if(a==1||a==2){label2.Text="是素?cái)?shù)";}for(inti=2;i<a;i++){if(a%i==0){label2.Text="不是素?cái)?shù)";break;}else{label2.Text="是素?cái)?shù)";}}#endregion}}}DES(DataEncryptionStandard)算法,于1977年得到美國(guó)政府的正式許可,是一種用56位密鑰來(lái)加密64位數(shù)據(jù)的方法。DES算法以被應(yīng)用于許多需要安全加密的場(chǎng)合。(如:UNIX的密碼算法就是以DES算法為基礎(chǔ)的)。下面是關(guān)于如何實(shí)現(xiàn)DES算法的語(yǔ)言性描述:注1:下面出現(xiàn)了很多對(duì)“位數(shù)字序列”進(jìn)行重新排序的表,表中的數(shù)字相應(yīng)變換前的序列中的位置,把原序列中那個(gè)位置的位數(shù)字放到表中的數(shù)字所在的位置即可得到新的位數(shù)字序列。注2:S[1]–S[8]中的數(shù)據(jù)取值范圍是0–15,代表4位二進(jìn)制數(shù)據(jù)。1計(jì)算子密鑰1-1變換密鑰取得64位的密鑰,從左向右,每個(gè)字節(jié)的第8位作為奇偶校驗(yàn)位,校驗(yàn)位也許是為了使得密鑰更嚴(yán)格,但實(shí)際對(duì)數(shù)據(jù)進(jìn)行加密時(shí),這個(gè)奇偶位是要舍棄的,并不參與運(yùn)算,所以在使用DES加解密時(shí),只要進(jìn)行密文通信的雙方協(xié)商好,可不必關(guān)注這點(diǎn)。1-2變換密鑰1-2-1根據(jù)下表(PC-1)對(duì)64位密鑰進(jìn)行變換得到56位的序列,由表中可以看出,在變換中,舍棄了原始64位密鑰中的奇偶校驗(yàn)位,即舍去了原始64位密鑰中的第8、16、24、32、40、48、56、64等八個(gè)位。PermutedChoice1(PC-1)574941332517915850423426181025951433527191136052443663554739312315762544638302214661534537292113528201241-2-2將變換后的序列分為兩個(gè)部分,開(kāi)始的28位稱(chēng)為C[0],最后的28位稱(chēng)為D[0]。1-2-3生成16個(gè)子密鑰(每個(gè)子密鑰均為48位的數(shù)字序列),初始I=1。1-2-3-1同時(shí)將C[I]、D[I]左移1位或2位,根據(jù)I值決定循環(huán)左移的位數(shù)。見(jiàn)下表1-2-3-2、將C[I]D[I]作為一個(gè)整體按下表(PC-2)變換,得到48位的K[I]PermutedChoice2(PC-2)14171124153281562110231912426816727201324152313747553040514533484449395634534642503629321-2-3-3從1-2-3-1處循環(huán)執(zhí)行,直到K[16]被計(jì)算完畢。小結(jié):以上過(guò)程得出16個(gè)子密鑰K[1]–K[16],對(duì)數(shù)據(jù)進(jìn)行加解密時(shí),實(shí)際參與運(yùn)算的就是這16個(gè)子密鑰。在加密時(shí),子密鑰的調(diào)用順序?yàn)镵[1]–K[16];在解密時(shí),子密鑰的調(diào)用順序?yàn)镵[16]–K[1]。2解決64位的數(shù)據(jù)【加密】2-1取得64位的數(shù)據(jù)序列,假如數(shù)據(jù)序列長(zhǎng)度局限性64位,應(yīng)當(dāng)將其擴(kuò)展為64位(這點(diǎn)必須要做,并且最佳讓通信雙方在事先約定好規(guī)則,兩者使用同樣的規(guī)則,例如補(bǔ)零等)2-2將64位數(shù)據(jù)序列按下表變換(IP)InitialPermutation(IP)585042342618102605244362820124625446383022146645648403224168574941332517915951433527191136153453729211356355473931231572-3將變換后的數(shù)據(jù)分為兩部分,開(kāi)始的32位稱(chēng)為L(zhǎng)[0],最后的32位稱(chēng)為R[0]。2-4用16個(gè)子密鑰加密數(shù)據(jù),初始I=1。2-4-1將32位的R[I-1]按下表(E)擴(kuò)展為48位的E[I-1]Expansion(E)32123454567898910111213121314151617161718192021202122232425242526272829282930313212-4-2異或E[I-1]和K[I],即E[I-1]XORK[I]2-4-3將異或后的結(jié)果分為8個(gè)6位長(zhǎng)的部分,第1位到第6位稱(chēng)為B[1],第7位到第12位稱(chēng)為B[2],依此類(lèi)推,第43位到第48位稱(chēng)為B[8]。2-4-4按S表變換所有的B[J],初始J=1。所有在S表的值都被當(dāng)作4位二進(jìn)制數(shù)解決。2-4-4-1將B[J]的第1位和第6位組合為一個(gè)2位長(zhǎng)度的變量M,M作為在S[J]中的行號(hào)。2-4-4-2將B[J]的第2位到第5位組合,作為一個(gè)4位長(zhǎng)度的變量N,N作為在S[J]中的列號(hào)。2-4-4-3用S[J][M][N]來(lái)取代B[J],B[J]由本來(lái)的6位數(shù),變成了值為S[J][M][N]的4位數(shù)。SubstitutionBox1(S[1])1441312151183106125907015741421311061211953841148136211151297310501512824917511314100613S[2]1518146113497213120510313471528141201106911501471110413158126932151381013154211671205149S[3]1009146315511312711428137093461028514121115113649815301112125101471101306987415143115212S[4]7131430691012851112415138115615034721211014910690121171315131452843150610113894511127214S[5]2124171011685315130149141121247131501510398642111101378159125630141181271142136150910453S[6]1211015926801334147511101542712956113140113891415528123704101131164321295151011141760813S[7]4112141508133129751061130117491101435122158614111312371410156805926111381410795015142312S[8]13284615111109314501271151381037412561101492711419121420610131535821147410813151290356112-4-4-4、從2-4-4-1處循環(huán)執(zhí)行,直到B[8]被替代完畢。2-4-4-5、將全新的B[1]到B[8]按順序組合成32位數(shù)字序列,按下表(P)變換,得到P。PermutationP16720212912281711523265183110282414322739191330622114252-4-6異或P和L[I-1],結(jié)果放在R[I],即R[I]=PXORL[I-1]。2-4-7把R[I-1]傳給L[I],L[I]=R[I-1]。2-4-8從2-4-1處開(kāi)始循環(huán)執(zhí)行,共有16次,即直到K[16]被變換完畢,得到R[16]和L[16]。2-4-5把組合變換后的R[16]和L[16],按照R[16]在左、L[16]在右的順序組合成64位數(shù)字序列,再按下表(IP-1)變換得到最后的結(jié)果。FinalPermutation(IP**-1)40848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725小結(jié):以上,完畢了對(duì)64位數(shù)字序列的一次DES加密,假如被加密數(shù)據(jù)的長(zhǎng)度大于64位,若長(zhǎng)度為64的整數(shù)倍,則無(wú)需補(bǔ)數(shù)據(jù),若長(zhǎng)度不為64的整數(shù)倍,則需先補(bǔ)齊使之為64的整數(shù)倍,然后按照64位對(duì)待加密數(shù)據(jù)進(jìn)行分段,每64位為一段,分別用以上算法對(duì)每段數(shù)據(jù)進(jìn)行加密,之后各段再按先前順序組合在一起,即可得到這串?dāng)?shù)據(jù)的密文。3解決64位的數(shù)據(jù)【解密】3-1解密與加密的整體流程完全同樣;3-2不同點(diǎn)在于,加密中的“2-4-2、異或E[I-1]和K[I],即E[I-1]XORK[I]”,到解密時(shí)需要變成“異或E[I-1]和K[17-I],即E[I-1]XORK[17-I]”;小結(jié):根據(jù)以上第二步對(duì)加密流程做一點(diǎn)點(diǎn)調(diào)整之后,就是解密的過(guò)程。被解密數(shù)據(jù)的長(zhǎng)度必須為64位的整數(shù)倍,否則不能進(jìn)行解密;假如數(shù)據(jù)的長(zhǎng)度大于64位,按照64位對(duì)待解密數(shù)據(jù)進(jìn)行分段,每64位為一段,分別用以上算法對(duì)每段數(shù)據(jù)進(jìn)行解密,之后各段再按先前順序組合在一起,即可得到這串?dāng)?shù)據(jù)的明文。4、單DES與常見(jiàn)的三DES4-1單DES數(shù)據(jù)規(guī)定:密鑰為64位,數(shù)據(jù)長(zhǎng)度為64位的整數(shù)倍。加密與解密環(huán)節(jié):解決同一串64位數(shù)據(jù)時(shí),加密或者解密都是執(zhí)行一次。4-2常見(jiàn)的三DES數(shù)據(jù)規(guī)定:密鑰為128(KEY1+KEY2)位,數(shù)據(jù)長(zhǎng)度為64位的整數(shù)倍。加密與解密環(huán)節(jié):解決同一串64位數(shù)據(jù)(設(shè)為A)時(shí),加密或者解密都要執(zhí)行三次單DES,具體如下:加密:A加密(KEY1)得到BàB解密(KEY2)得到CàC加密(KEY1)得到D解密:D解密(KEY1)得到EàE加密(KEY2)得到FàF解密(KEY1)得到AusingSystem;usingSystem.Collections.Generic;usingSystem
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 造紙行業(yè)的品牌策略與價(jià)值傳遞考核試卷
- 谷物儲(chǔ)存的糧食防潮技術(shù)考核試卷
- 神經(jīng)科學(xué)與心理學(xué)研究出版考核試卷
- 茶葉栽培的農(nóng)業(yè)知識(shí)與技術(shù)推廣考核試卷
- 電機(jī)在電力工具中的應(yīng)用評(píng)估考核試卷
- 聚己內(nèi)酰胺纖維性能測(cè)試考核試卷
- 砼結(jié)構(gòu)構(gòu)件的施工材料管理考核試卷
- 拍賣(mài)行業(yè)網(wǎng)絡(luò)安全防護(hù)考核試卷
- 罐頭食品生產(chǎn)衛(wèi)生管理考核試卷
- 服務(wù)機(jī)器人技術(shù)成果轉(zhuǎn)化與應(yīng)用考核試卷
- DL∕T 1919-2018 發(fā)電企業(yè)應(yīng)急能力建設(shè)評(píng)估規(guī)范
- 遼寧省沈陽(yáng)市鐵西區(qū)2023-2024學(xué)年七年級(jí)下學(xué)期期末數(shù)學(xué)試題
- 2024年紫金山科技產(chǎn)業(yè)發(fā)展集團(tuán)招聘筆試沖刺題(帶答案解析)
- 駕駛員心理健康教育培訓(xùn)
- 2024年四川二造《建設(shè)工程造價(jià)管理基礎(chǔ)知識(shí)》考前強(qiáng)化練習(xí)題庫(kù)300題(含解析)
- MOOC 音樂(lè)心理學(xué)-上海師范大學(xué) 中國(guó)大學(xué)慕課答案
- 乙結(jié)冗長(zhǎng)癥護(hù)理查房
- 2020年8月自考00158資產(chǎn)評(píng)估試題及答案含解析
- 財(cái)政預(yù)算監(jiān)督培訓(xùn)課件
- 秦腔-全折劇譜《殺廟》樂(lè)譜
- 多功能地鐵換乘站綜合概要課件
評(píng)論
0/150
提交評(píng)論