資源描述:
《實(shí)驗(yàn)一des加密解密》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、實(shí)驗(yàn)一DES加密解密實(shí)驗(yàn)?zāi)康?、理解對稱加密算法的原理和特點(diǎn)。2、理解DES和AES算法的加密原理。實(shí)驗(yàn)原理DES是一種分組加密算法,所謂分組加密算法就是對一定大小的明文或密文來做加密或解密動作。而在DES這個加密系統(tǒng)中,每次加密或解密的分組大小均為64位,所以DES沒有密文擴(kuò)充的問題。對大于64位的明文只要按每64位一組進(jìn)行切割,而對小于64位的明文只要在后面補(bǔ)“0”即可。另一方面,DES所用的加密或解密密鑰也是64位大小,但因其中有8個位是用來作奇偶校驗(yàn)的,所以64位中真正起密鑰作用的只有56位,密鑰過短也是DE
2、S最大的缺點(diǎn)。DES加密與解密所用的算法除了子密鑰的順序不同外,其他部分完全相同。核心代碼#include#include#include#defineENCRYPT1#defineDECRYPT0staticvoidprintHex(char*cmd,intlen);staticvoidprintArray(constchar*In,intlen);staticvoidF_func(boolIn[32],constboolKi[48]);//f函數(shù)stati
3、cvoidS_func(boolOut[32],constboolIn[48]);//S盒代替staticvoidTransform(bool*Out,bool*In,constchar*Table,intlen);//變換staticvoidXor(bool*InA,constbool*InB,intlen);//異或staticvoidRotateL(bool*In,intlen,intloop);//循環(huán)左移staticvoidByteToBit(bool*Out,constchar*In,intbits);/
4、/字節(jié)組轉(zhuǎn)換成位組staticvoidBitToByte(char*Out,constbool*In,intbits);//位組轉(zhuǎn)換成字節(jié)組//16位子密鑰staticboolSubKey[16][48];//64位經(jīng)過PC1轉(zhuǎn)換為56位(PC-1)conststaticcharPC1_Table[56]={};//左移conststaticcharLOOP_Table[16]={};//排列選擇2(PC-2)conststaticcharPC2_Table[48]={};//Ri_1(32位)經(jīng)過變換E后膨脹為48
5、位(E)voidF_funcstaticconstcharE_Table[48]={};//8個4比特合并為32比特的排列PconststaticcharP_Table[32]={};//經(jīng)過S盒S-boxesconststaticcharS_Box[8][4][16]={};//初始排列(IP)conststaticcharIP_Table[64]={};//L16與R16合并后經(jīng)過IP_1的最終排列(IP**-1)conststaticcharIPR_Table[64]={};voidDes_SetKey(con
6、stcharKey[8]);//生成子密鑰voidDes_Run(charOut[8],charIn[8],boolType);//DES算法voidmain(intargc,char*argv[]){charkey[12]={1,2,3,4,5,6,7,8};charstr[12]="Hello";charstr2[12];//printArray(PC2_Table,sizeof(PC2_Table)/sizeof(PC2_Table[0]));printf("Beforeencrypting:");puts(s
7、tr);Des_SetKey(key);memset(str2,0,sizeof(str2));Des_Run(str2,str,ENCRYPT);printf("Afterencrypting:");printHex(str2,8);memset(str,0,sizeof(str));printf("Afterdecrypting:");Des_Run(str,str2,DECRYPT);puts(str);}實(shí)驗(yàn)分析DES采用傳統(tǒng)的換位和置換的方法進(jìn)行加密,在56b密鑰的控制下,將64b明文塊變換為64b密文塊,
8、加密過程包括16輪的加密迭代,每輪都采用一種乘積密碼方式(代替和移位)。實(shí)驗(yàn)總結(jié)與心得體會這個實(shí)驗(yàn)要充分了解其原理,才是做這個實(shí)驗(yàn)的真正目的,在這個實(shí)驗(yàn)中,我覺得比較難的就是,要將明文和密鑰經(jīng)過初始變換和十六輪加密變換等一系列變換后才能得到張結(jié)置換,其中的變換步驟比較多,而且比較復(fù)雜,還要將十六進(jìn)制轉(zhuǎn)化為二進(jìn)制,工作量比較大。由本次DES算法實(shí)