信息安全實習(xí)報告_第1頁
信息安全實習(xí)報告_第2頁
信息安全實習(xí)報告_第3頁
信息安全實習(xí)報告_第4頁
信息安全實習(xí)報告_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE2信息安全技術(shù)實驗報告——創(chuàng)建信息加解密系統(tǒng)一:實驗內(nèi)容:用AES算法實現(xiàn)對文件的加解密,創(chuàng)建一個簡單的文件加解密系統(tǒng)。二:實驗要求:寫出基本的實驗步驟,如何實現(xiàn),主要代碼,以及實驗結(jié)果。要求結(jié)構(gòu)清晰,步驟完整,思路明確。掌握AES算法的基本原理,了解文件加解密流程。三:詳細(xì)實驗步驟:1.AES算法簡介:AES(TheAdvancedEncryptionStandard)是美國國家標(biāo)準(zhǔn)與技術(shù)研究所用于加密電子數(shù)據(jù)的規(guī)范。它被預(yù)期能成為人們公認(rèn)的加密包括金融、電信和政府?dāng)?shù)字信息的方法。本文展示了AES的概貌并解析了它使用的算法。包括一個完整的C#實現(xiàn)和加密.NET數(shù)據(jù)的舉例。在讀完本文后你將能用AES加密、測試基于AES的軟件并能在你的系統(tǒng)中使用AES加密。

美國國家標(biāo)準(zhǔn)與技術(shù)研究所(NIST)在2002年5月26日建立了新的高級數(shù)據(jù)加密標(biāo)準(zhǔn)(AES)規(guī)范。本文中我將提供一個用C#編寫的的能運行的AES實現(xiàn),并詳細(xì)解釋到底什么是AES以及編碼是如何工作的。我將向您展示如何用AES加密數(shù)據(jù)并擴展本文給出的代碼來開發(fā)一個商業(yè)級質(zhì)量的AES類。我還將解釋怎樣把AES結(jié)合到你的軟件系統(tǒng)中去和為什么要這么做,以及如何測試基于AES的軟件。

注意本文提供的代碼和基于本文的任何其它的實現(xiàn)都在聯(lián)邦加密模塊出口控制的適用范圍之內(nèi)(詳情請參看CommercialEncryptionExportControls)。

AES是一個新的可以用于保護電子數(shù)據(jù)的加密算法。明確地說,AES是一個迭代的、對稱密鑰分組的密碼,它可以使用128、192和256位密鑰,并且用128位(16字節(jié))分組加密和解密數(shù)據(jù)。與公共密鑰密碼使用密鑰對不同,對稱密鑰密碼使用相同的密鑰加密和解密數(shù)據(jù)。通過分組密碼返回的加密數(shù)據(jù)的位數(shù)與輸入數(shù)據(jù)相同。迭代加密使用一個循環(huán)結(jié)構(gòu),在該循環(huán)中重復(fù)置換(permutations)和替換(substitutions)輸入數(shù)據(jù)。Figure1顯示了AES用192位密鑰對一個16位字節(jié)數(shù)據(jù)塊進行加密和解密的情形。2.算法描述:1.1.傳統(tǒng)的AES;AES算法屬于分組密碼算法,它的輸入分組、輸出分組以及加/解密過程中的中間分組都是128比特。密鑰的長度K為128,192或256比特。用Nk=4,6,8代表密鑰串的字?jǐn)?shù)(1字=32比特),在本文編制的程序中由用戶選定。用Nr表示對一個數(shù)據(jù)分組加密的輪數(shù)(加密輪數(shù)與密鑰長度的關(guān)系見表1)。每一輪都需要一個和輸入分組具有同樣長度(128比特)的擴展密鑰Ke的參與。由于外部輸入的加密密鑰K長度有限,所以在AES中要用一個密鑰擴展程序(KeyExpansion)把外部密鑰K擴展成更長的比特串,以生成各輪的加密密鑰。1.2.本系統(tǒng)采用的算法:

簡單來說,我是用AES的方式加解密,唯一不同點,我將原本AES的解密方式改成加密,因此,把原本加密的方式自然變成解密方式。加密流程解密流程(1)位元組代換(ByteSubtransformation):

位元組代換是一個以位元組為單位的非線性的代換運算它是可逆的(invertable)。

SubByte:InvSubByte:實現(xiàn)代碼:intsubboxs[256]={ 99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118, 202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192, 183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21, 4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117, 9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132, 83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207, 208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168, 81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210, 205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115, 96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219, 224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121, 231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8, 186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138, 112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158, 225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223, 140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22};voidSbox(int*p,intn){ for(inti=0;i<n;i++) p[i]=subboxs[p[i]];}(2)移列轉(zhuǎn)換(ShiftRowtransformation):

在這個轉(zhuǎn)換中,State的每一列以不同的偏移量做環(huán)狀位移,第0列不動,第一列位移C1個位元組,第二列位移C2個位元組,第三列位移C3個位元組。位移的偏移量C1,C2,C3取決于區(qū)塊的數(shù)目(Nb)。ShiftRows:InvSifftRows:實現(xiàn)代碼:voidshift(int*p){ intn=4,temp; for(inti=0;i<4;i++){ for(intk=0;k<i;k++){ for(intj=0;j<4-1;j++){ temp=p[i*n+j]; p[i*n+j]=p[i*n+j+1]; p[i*n+j+1]=temp; } } }}(3)混行轉(zhuǎn)換(MixColumntransformation):在這個轉(zhuǎn)換中,把State當(dāng)作一個在GF(28)中的多項式并且對一個固定的多項式

c(x)作乘法,如果發(fā)生溢位,則再模余x4+1。MixColumn:InvMixColumn:實現(xiàn)代碼:voidmixcolum(int*p){ int*q; q=newint[4*4]; for(intk=0;k<4;k++){ for(inti=0;i<4;i++){ bitset<8>temp; for(intj=0;j<4;j++){ bitset<8>bit(p[j*4+k]); bitset<9>test(p[j*4+k]); bitset<8>conf(0x1b); bitset<8>self(p[j*4+k]); if(mix[i*4+j]==1){ temp^=bit; } elseif(mix[i*4+j]==2) { bit<<=1; test<<=1; if(test.test(8)) bit^=conf; temp^=bit; } else { bit<<=1; test<<=1; if(test.test(8)) bit^=conf; bit^=self; temp^=bit; } } q[i*4+k]=temp.to_ulong(); } } for(intl=0;l<16;l++) p[l]=q[l];}(4)回合密鑰相加(RoundKeyAddition):這個運算主要是把每一個回合密鑰(RoundKey)透過簡單的bitwiseEXOR加入到每一個運算中所產(chǎn)生的中間值。IntheAddRoundKey()transformation,aRoundKeyisaddedtotheStatebyasimplebitwiseXORoperation.EachRoundKeyconsistsofNbwordsfromthekeyschedule.ThoseNbwordsareeachaddedintothecolumnsoftheState,suchthat實現(xiàn)代碼:intaroundkeys[12]={ 0x01,0x02,0x04,0x08, 0x10,0x20,0x40,0x80, 0x1b,0x36,0x6c,0x6c};voidupdatekey(int*p){ for(inti=0;i<4;i++){ for(intj=0;j<4;j++){ bitset<8>temp1(p[i+j*4]); bitset<8>temp2(mixkeys[j]); temp1^=temp2; mixkeys[j]=temp1.to_ulong(); p[i+j*4]=temp1.to_ulong(); } }}voidcopy(intn,int*key){ for(inti=0;i<16;i++)aroundkeytalbes[n][i]=key[i];}voidcreatearoundkeytables(int*key){ for(inti=0;i<11;i++){ copy(i,key); ge

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論