版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、信息安全技術(shù)實驗指導(dǎo)書(適用于軟件工程專業(yè))計算機科學(xué)與技術(shù)學(xué)院網(wǎng)絡(luò)工程教研室2008.12TOC o T3 h zHYPERLINKHC WUsersWAdministratorWDesktopWtempW 1 _Toc231130367實驗一 對稱密碼算法 DES PAGEREF _Toc231180367 li 3一HYPERL-C:UsersAdministratorDesktoptemp M 1 Toc231180368 實驗二 HASH 算法 SHA1. PAGEREF _Toc231180368 li 10HYPERLINK C:UsersAdministratorDesktop
2、tempi 1 _Toc231180369” 實驗三 郵件 加密軟件 PGP 的使用. PAGEREF Toc231180369 li 16實驗一對稱密碼算法DES密鑰:k=kk2k64ki = 0,1 i = 1, 2, -64【實驗冃的】通過該實驗.學(xué)習(xí)利用基本的密碼算法實現(xiàn)信息加解密過程,了解加密算法的作 用。【實驗環(huán)境】操作系統(tǒng);Wind。咗2000/XP,開發(fā)工具;Visual C+/ C+ Builder任選一種。【實驗類型】驗證性實驗【實驗學(xué)時】3學(xué)時【實驗內(nèi)容及步驟】(-)加密模塊的設(shè)計與實現(xiàn)丿使用DES算法設(shè)計加密模塊。(1)忡先把明文分成若干個64-bit的分組,算法以一個
3、分組作為輸入,通過一個初始置 換(IP)將明文分組分成左半部分(L。)和右半部分(Ro),齊為32-bita然后進行16輪完全 相同的運算,這些運算我們稱為函數(shù)f,在運算過程中數(shù)據(jù)與密鑰相結(jié)合。經(jīng)過16輪運算后, 左、右兩部分合在一起經(jīng)過一個末轉(zhuǎn)換(初始轉(zhuǎn)換的逆趕換IP),輸出一個64-bit的密文分 組。ro = 0,1 i = 1, 2, 64其中ky k16,k64是奇偶校驗位,起作用的僅為56位。加密算法:Ek(m) =IPT Ti6 T15T IP(m) Ti, i = 1, 2, -16 是一系列的變換。 解密算法:Ek】(c) = IPT Ti T2T16 IP (c)IP:1
4、9 17 25 33 41 19 572 10 18 26 34 42 50 583 11 19 27 35 43 51 594 12 20 28 36 44 52 605 13 21 29 37 45 53 616 14 22 30 38 46 54 62r-15 23 31 39 47 55 638 16 24 32 40 48 56 64IP:40 8 48 16 56 24 64 3239 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 2936 4 44 12 52 20 60 2835 3 43 11 51 19
5、 59 2734 2 42 10 50 18 58 2633 1 41 9 49 17 57 25(2)每一輪的運算過程:如圖1所示。通過一個擴展置換(E)將數(shù)據(jù)的左半部分擴展 成48位,并通過一個異或操作與48位密鑰結(jié)合,通過8個S盒(substitution box)將 這48位替代成新的32位.再依照P盒置換一次。以上四步構(gòu)成復(fù)雜函數(shù)f (圖中虛線框里 的部分)。然后通過另一個異或運算,將復(fù)雜函數(shù)f的輸岀與左半部分結(jié)合成為新的右半部分。 如此反復(fù)16次完成DES算法的16輪運算。圖1 一輪DES擴展置換E:3212 3454568989 10 11 12 131213 14 15 16
6、171617 18 19 20 212021 22 23 24 252425 26 27 28 292829 30 31 3218個S盒:S1: 14, 4,13,1, 2,15,11, 8, 3,10,6,12, 5, 9, 0, 7,0,15, 7, 4,14, 2,13,1,10, 6,12,11, 9, 5, 3, 8,4,1,14, 8,13, 6, 2,11,15,12, 9, 7, 3,10, 5, 0,15.12, 8, 2, 4, 9,1,7,5,11, 3,14,10, 0, 6,13,S2: 15,1, 8,14,6,11, 3, 4, 9, 7, 2,13,12, 0,
7、 5,10,3.13, 4, 7,15, 2, 8,14,12, 0,1,10, 6, 9,11, 5,0,14, 7,11,10, 4,13,1, 5, 8,12, 6, 9, 3, 2,15,13, & 10,1, 3,15, 4, 2,11, 6, 7,12, 0, 5,14, 9, S3:10, 0, 9,14, 6, 3,15, 5,1,13,12, 7,11, 4, 2, &13, 7, 0, 9, 3, 4, 6,10, 2, 8, 5,14,12,11,15,1,13, 6, 4, 9, 8,15, 3, 0,11,1, 2,12, 5,10,14, 7,1.10.13,0,
8、6, 9, 8, 7, 4,15,14, 3,11, 5, 2,12, S4:7.13.14,3, 0, 6, 9,10,1, 2, 8, 5,11,12, 4,15,13, 8,11, 5, 6,15, 0, 3, 4, 7, 2,12,1,10,14, 9,10, 6, 9, 0,12,11, 7,13,15,1, 3,14, 5, 2, & 4,3,15, 0, 6,10,1,13, & 9, 4, 5,11,12, 7, 2,14, S5:2.12,4,1, 7,10,11, 6, 8, 5, 3,15,13, 0,14, 9,14,11, 2,12, 4, 7,13,1, 5, 0,
9、15,10, 3, 9, & 6,4, 2,1,11,10,13, 7, 8,15, 9,12, 5, 6, 3, 0,14,11,& 12, 7,1,14, 2,13, 6,15, 0, 9,10, 4, 5, 3, S6:1 58 50 42 34 26 18102 59 511335 2719 113 60 52 44 3663 55 47 39 31 33 1562 54 46 38 30 22146 61 53 45 37 2921 135 28 20 1245,9, 2, 6, 8, 0,13, 3, 4,14, 7, 5,11,10.15,4, 2, 7,12,
10、 9, 5, 6,1,13,14, 0,11, 3, &9.14.15, 5, 2, 8,12, 3, 7, 0, 4,10,1,13,11, 6,s?:4, 3, 2,12, 9, 5,15,10,11,14,1, 7, 6, 0, 8,13,4,11, 2,14,15, 0, 8,13, 3,12, 9, 7,5,10, 6,1,13, 0,11, 7, 4, 9,1,10,14, 3, 5,12, 2,15, & 6,1, 4,11,13,12, 3, 7,14,10,15, 6, 8, 0, 5, 9, 2,6,11,13, 8,1,4,10, 7, 9, 5, 0,15,14, 2,
11、 3,12,S8:13, 2, 8, 4, 6,15,11,1,10, 9, 3,14, 5, 0,12, 7, 1,15,13, 8,10, 3, 7, 4,12, 5, 6,11, 0,14, 9, 2, 7,11, 4,1, 9,12,14, 2, 0, 6,10,13,15, 3, 5, &2,1,14, 7, 4,10, & 13,15,12, 9, 0, 3, 5, 6,11,P盒置換:162021291228171152326518311028241432273919133062211425(3)每輪子密鑰的生成:密鑰通常農(nóng)示為64-bit,但每個第8位用作奇偶校驗,實際的 密鑰
12、長度為5G-bito在DES的毎輪運算中,從5G-bit密鑰產(chǎn)生出不同的48-bit的了密鑰 (KX,K2K16)O如圖2所示.首先,56-bit密鑰分成兩部分(以C、D分別表示這兩部分), 每部分28位,然后每部分分別循環(huán)左移1位或2位(從第1輪到第16輪,相應(yīng)左移位數(shù)分別 為:1、1. 2、2、2、2、2、2、1. 2、2、2、2. 2、2. 1) 再將生成的 56-bit 組經(jīng)過一個壓 縮轉(zhuǎn)換(compression permutation),舍掉其中的某8個位并按一定方式改變位的位置,生成 一個18-bit的子密鑰K,64位密鑰床縮成56位的PC-1:Cb D合并壓縮成K:14 17
13、11 24 153 28 156 21 1023 19 124 2681627 20 13257 49 41 33 25 1741 52 3130 40 5137 47 5545 33 4849 39 56 34 5346 42 50 36 2932圖2 DES密鑰的生成DES的幾種工作方式 電子密本方式(ECB)將明文分成n個64比特分組.如果明文長度不是64比特的倍數(shù),則在明文末尾填充適當 數(shù)目的規(guī)定符號。對明文組用給定的密鑰分別進行加密,行密文C=(CO,C1,Cn-l)其中 Ci=DES(K, xi), i=0,1,n-l 密文分組鏈接方式(CBC)在CBC方式下,毎個明文組xi在加密
14、前與先一組密文按位模二加后,再送到DES加密,CBC 方式克服了 ECB方式報內(nèi)組重的缺點,但由丁明文組加密前與一組密文有關(guān),因此前一組密文 的錯誤會傳播到下一組。 密文反饋方式(CFB),可用于序列密碼明文X=(x0, xl,xn-l),其中xi由t個比特組成0 輸出反饋方式(OFB).可用于序列密碼與CFB唯-不同的是OFB是直接1RDES輸出的t個比特,而不是収密文的t個比特,其余 都與CFB相同。但它収的是DES的輸出.所以它克服了 CFB的密文錯誤傳播的缺點(-)實驗用到的算法分析本實驗用到了 LibTonCrypt密碼庫(Tom St Denis編寫)中提供的des算法實現(xiàn)HYPE
15、RLINK http:/code, haskell. org/morrow/code/batch/wine/dlls/rsaenh/7http:/code, haskell. org/noircw/code/batch/wine/dlls/rsaenh/ DES 程序包括一個頭 文件tomcrypt.h和一個實現(xiàn)DES的源文件des. c。本實驗用到的頭文件函數(shù)說明。1)int des_setup(const unsigned char *key, int keylen, int num_rounds, des_key *skey);函數(shù)名稱:密鑰生成函數(shù)參數(shù)說明:key是一個指針,指向用戶輸
16、入的初始密鑰。keylen是輸入密鑰的長度,以字節(jié)為單位。num_rounds是加密輪數(shù),當輸入0時,使用默認的輪數(shù)。skey是一個指向結(jié)構(gòu)體變量的指針,變量里面存儲加密和解密時每輪使用的子密鑰。當密鑰生成成功時,返回值為CRYPT_OK(0),結(jié)果保留tE skey IS向的結(jié)構(gòu)體。des_key的定義如下:typedef struct tag_des_key ulong32 ek32, dk32; des_key; 結(jié)構(gòu)體里的ek心儲加密時用的f密鑰,dk里面心儲解密時用的了密鑰。結(jié)構(gòu)體中用兩個32bit整數(shù)來存儲一輪的48bit密鑰,每一個32bit整數(shù)被分成4個8bit,每 個8bit
17、的低6位bit存儲密鑰.如果把48bit密鑰分成8組,則這8組的順序按存儲的順序從 高到低分別為1、3、5、7、2、4、6、8。這樣作是為了加密時可以把擴展和査表運算結(jié)合進行。2)void des_ecb_encrypt (const unsigned char *pt, unsigned char *ct, const des.key *key); 函數(shù)名稱:加密函數(shù)(ECB模式)參數(shù)說明:Pt是指向待加密的明文數(shù)組的指針Ct是指向存儲加密結(jié)果的指針key是調(diào)用密鑰生成函數(shù)后儲每一輪子密鑰的結(jié)構(gòu)體變量3)void des_ecb_decrypt (const unsigned char *c
18、t, unsigned char *pt, const des_key *key); 函數(shù)名稱:解密函數(shù)(ECB模式)參數(shù)說明:ct是指向待解密的密文數(shù)組的指針pt是指向存儲解密結(jié)果的指針key是調(diào)用密鑰生成函數(shù)后存儲每一輪子密鑰的結(jié)構(gòu)體變最注意:加密和解密時,pt和ct可以指向同一塊內(nèi)存。每次處理8個字節(jié)(分組大小為64位)。復(fù)習(xí)ppt有關(guān)數(shù)據(jù)填充部分:如果明文輸入不是分組長的整數(shù)倍怎么辦? (PKCS#5, PKCS #7)明文在末尾填充的字節(jié)數(shù)為1到bb,其中bb等于以字節(jié)表示的分組大小.缺少兒個字節(jié) 填充幾個“幾(二進制表示)1:明文長度k:每個分組的長度01if 1 modk = k
19、-l02 02if 1 mod k = k-2kk kk if 1 modk= 0例如:填充8個字節(jié),每個填充字節(jié)為二進制00001000去掉填充字節(jié):看最后一個字節(jié)(是幾則去掉解密后明文最后幾個字節(jié))思考:為什么不允許填充0字節(jié)?補充函數(shù)int des_ecb_encData(const unsigned char *pt, int plainLen. unsigned char *ct, int*cipherLen, const des_key *key)暢數(shù)名稱:加密暢數(shù)(ECB模式人 加密任意長皮明文,需要填充 參數(shù)說明: pt是指向待加密的明文數(shù)組的指針 plainLen是明文的長度
20、,以字節(jié)為單位。ct是指向存儲加密結(jié)果的指針cipherLen返回密文的長度,以字節(jié)為單位。key是調(diào)用密鑰生成函數(shù)后存儲毎一輪子密鑰的結(jié)構(gòu)體變屋【思考題】1.DES算法是一種什么類型算法?(提示:從密碼體制(密碼編碼學(xué))的三個不同的方面進行 分類,它分別屬于哪一種)。2.DES算法的分組大小.密鑰長度分別是務(wù)少?3.測試DES加密的速度,填寫下列表格。注意:測試速度時,工程應(yīng)為release版,否則數(shù)據(jù)不準確。Build-Set Active Configuration-Win32 Release機器主頻:內(nèi)存操作系統(tǒng):循環(huán)次數(shù)LOOP_NUMBER數(shù)據(jù)長度循環(huán)次數(shù)LOOF_NUMBER數(shù)據(jù)
21、長度蛟諒長度(兆比特,Mb)時間(秒) 速度(Mbps) 第一次 1000000 61 0352 0.438 139 35 第 二次 15000000 915 527 6 594 138 842 第三次 500000 30 5176 0 219 139.362 平均時間(秒) 速度(Mbps) 第一次 1000000 61 0352 0438 139 35 第二次 15000000 915 527 6 594 138 842 第三次 500000 30 5176 0 219 139 362 平均速度(Mbps)第一次 1000000 61.0352 0438 139 35第二次15000000
22、 915 527 6 594 138.842第三次 500000 30 5176 0 219 139 362平均第一次 1000000 61 0352 0.438 139 35 第二次 15000000 915.527 6 594 138 842第一次 1000000 61 0352 0 438 139 35 第二次 15000000 915 527 6 594 138 842 第三次 500000 30.5176 0.219 139 362 平均 -1000000 61 0352 0438 139 35 第二次 15000000 915 527 6 594 138842 第三次500000
23、30.5176 0.219 139 362平均 -61 0352 0 438 139 35 第二次 15000000 915 527 6 594 138 842 第三次500000 30.5176 0.219 139 362平均 -0 438 139 35 第二次 15000000 915 527 6 594 138 842 第三次500000 30.5176 0.219 139 362平均 -13935 第二次 15000000 915 527 6 594 138 842 第三次500000 30.5176 0.219 139 362平均 -第二次 15000000 915.527 6 59
24、4 138 842 第三次 500000 30 5176 0 219 139.362第二次 15000000 915 527 6.594 138 842 第三次 500000 30.5176 0.219 139 362 平均 -15000000 915.527 6 594 138 842 第三次 500000 30 5176 0 219 139 362 平均915 527 6.594 138 842 第三次 500000 30 5176 0.219 139.362 平均6.594 138 842 第三次 500000 30.5176 0219 139 362 平均138.842 第三次 500
25、000 30.5176 0 219 139 362 平均 第三次 500000 30 5176 0 219 139.362 半均第三次 500000 30 5176 0 219 139 362 平均 一一500000 30 5176 0 219 139 362 平均-30.5176 0.219 139.362 平均-0.219 139 362 平均-139 362 平均- - -平均 -平均-4、下列兩題選作一題4.1簡述DES加密的基本步驟(實現(xiàn)原理人也可以用柜圖表示。4. 2如果明文數(shù)據(jù)長度不是8的整數(shù)倍,可以調(diào)用補充函數(shù)des.ecb.encData加密,試編寫出 對應(yīng)的解密函數(shù)des_
26、ecb_decDataint des_ecb_decData(const unsigned char *ct, int cipherLen, unsigned char *pt, int *plainLen, const des_key *key)函數(shù)名稱:解密函數(shù)(ECB模式),需耍去掉填充,得到明文的長度參數(shù)說明:ct是指向待解密的密文數(shù)組的指針cipherLen是密文的長度,以字節(jié)為單位。Pt是抬向存儲解密結(jié)果的指針plaiiiLeii返回明文的氏度,以字節(jié)為單位。key是調(diào)用密鑰生成函數(shù)厲存儲每一輪子密鑰的結(jié)構(gòu)體變最【實驗報告撰寫要求】1)實驗報告紙到實驗室購買;2)實驗報告必須手寫,
27、內(nèi)容如下:(1)實驗題目(2)實驗?zāi)康?3)實驗環(huán)境(4)實驗類型(5)思考題實驗二 HASH 算法SHA1【實驗?zāi)康摹客ㄟ^實際編程了解SHA1 n法的運算過程.加I深對HASH算法的認識?!緦嶒灜h(huán)境】操作系統(tǒng):Windows2000/XP,開發(fā)工貝:Visual C+/ C+ Builder任選一種?!緦嶒烆愋汀框炞C型【實驗學(xué)時】3學(xué)時【實驗內(nèi)容及步驟】哈希(Hash)函數(shù)是將任意長的數(shù)字串轉(zhuǎn)換成一個較短的定長輸出數(shù)字串的函數(shù),輸出的 結(jié)果稱為哈希值。哈希函數(shù)具有如下特點:1)快速性對丁任意一個輸入值心由哈希函數(shù)JL計算哈希值y,即y=H(x)是非常容 易的。2)單向性對丁任意一個輸出值y,
28、希望反向推出輸入值x,使得y=H(x),是非常困難 的。3)無碰撞性:對丁任總給定的數(shù)據(jù)塊x,希望找到一個值y,滿足H(x)=H(y), ILxHy, 具有計算不可行性。哈希函數(shù)可用丁數(shù)字簽名、消息的完整性檢測、消息源認證檢測等?,F(xiàn)在常見的哈希函數(shù) 有MD5、SHAE SHA256. SHA384、SHA512等本實驗我們采用SHA1算法。1SHA1算法簡介SHA-1 H法由美國國家標準籾技術(shù)協(xié)會(NIST)與美國阿家安全局(NSA)設(shè)計,并且被 美國政対采納,成為美國國家標準。事實上SHA-1目前是全世界使用最為廣泛的哈希算法,己 經(jīng)成為業(yè)界的事實標準。安全哈希算法(Secure Hash
29、Algontlim )主要適用數(shù)丫簽名標準(Digital Signature Standard DSS)里面定義的數(shù)字簽名算法(Digital Signature Algonthm DSA)o對于長度小J: ?冬4位的消 息,SHA1會產(chǎn)生一個160位的消息摘耍。當接收到消息的時候,這個消息摘??梢杂脕眚炞C 數(shù)據(jù)的完整性。在傳輸?shù)倪^程中.數(shù)據(jù)很可能會發(fā)生變化,那么這時候就會產(chǎn)生不同的消息摘 要。2術(shù)語和概念21 位(Bit),字節(jié)(Byte)和字(Word)SHA1始終把消息當成一個位(bit)字符串來處理。本文中,一個“字(Word)是32位, 而一個“字節(jié)”(Byte)是8位。比如,字符
30、串“abc”可以被轉(zhuǎn)換成一個位字符4:01100001 01100010 OllOOOllo它也可以被表示成16進制字符串0 x616263 o c運算符和符號下面的邏輯運算符都被運用于“字”(Word)XAY =X, Y邏輯與(C語言中按位與運算符為&)XVY =X. Y邏輯或(C i吾言中按位或運算符為|)X XOR Y=X, Y邏輯異或(C語言中按位異或運算符為八)X = X邏輯収反X+Y定義如下:字X和Y代表兩個整數(shù)x和y.其中0v=xvy32 11 0=y2A32令整數(shù)z = (x+y) mod 2A32.這時候0 = z 2A32.將z轉(zhuǎn)換成字Z,那么就是Z = X + Y循環(huán)左移
31、位操作符Sn(X)o X是一個字,n是一個整數(shù),0=n=32 o Sn(X)= (Xn)OR(X32-n)Xvvii定義如下:拋棄繪左邊的n位數(shù)字,將各個位依次向左移動n位,然后用0填補右邊 的n位(最后結(jié)果還是32位人Xn是拋棄右邊的口位將冬個位依次向右移動n位,然后在 左邊的n位填0。因此可以叫Sn(X)位循環(huán)移位運算3SHA1算法描述在SHA1算法中,我們必須把原始消息(字符串,文件等)轉(zhuǎn)換成位字符串。SHA1算法 只接受位作為輸入。假設(shè)我們對字符串fbc”產(chǎn)生消息摘要。廳先,我們將它轉(zhuǎn)換成位字符串 如下:01100001 01100010 011000114 a* =97b=98 *c
32、 =99這個位字符串的長度為24o下面我們需耍5個步驟來計算。3 1補位消息必須進行補位,以使其長度在對512取模以后的余數(shù)是448.也就是說,(補位后的消 息長度)51? = 448。即使長度己經(jīng)滿足對512取模后余數(shù)是448.補位也必須耍進行。補位是這樣進行的:先補一個1然后再補0,直到長度滿足對512取模后余數(shù)是448。總 而言之.補位是至少補一位.繪多補512位。還是以前面的“abc”為例顯示補位的過程。原始信息:01100001 01100010 01100011補位第一步:01100001 0110001001100011 1 宵先補一個 “1”補位第二步:01100001 011
33、0001001100011 10-. 0 然后補 423 個 “0”我們可以把放后補位完成后的數(shù)據(jù)用16進制寫成下啲的樣子61626380 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000000現(xiàn)在,數(shù)據(jù)的長度是448 了,我們可以進行下一步操作。3.2補長度所謂的補長度是將原始數(shù)據(jù)的長度補到己經(jīng)進行了補位操作的消息后而。通常用一個64位 的數(shù)據(jù)來表示原始消息的長度。如果消息長度不大于64那么第一個字就是0。在進行了補 長度
34、的操作以后,整個消息就變成下而這樣了(16進制格式)61626380 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000000 00000000 00000018如果原始的消息長度超過了 512,我們需要將它補成512的倍數(shù)。然后我們把整個消息分 成一個一個512位的數(shù)據(jù)塊,分別處理毎一個數(shù)據(jù)塊,從而得到消息摘耍。3 3使用的常量一系列的常量字K(0).K(l),.,K(79),如果以16進制給出。它們?nèi)缦拢篕t = 0 x5
35、A827999(0 =t = 19)Kt = 0 x6ED9EBA1 (20 = t = 3刃Kt = 0 x8FlBBCDC (40 = t = 59)Kt = 0 xCA62ClD6 (60 = t = 79).34需要使用的函數(shù)在SHA1中我們需要一系列的函數(shù)。每個函數(shù)ft (0 = t = 79)都操作32位字B, C, D并 丄產(chǎn)生3?位字作為輸出。仕(B.C.D)可以如下定義(0 = t = 19)(20 = t = 39)(40 = t = 59)(60 = t H3 = H3+ D, H4 =H4+ E在處理完所有的Mn.后,消息摘耍是一個160位的字符串,以下啲的順序標識 H
36、0H1H2H3 H4.對于SHA256.SHA384.SHA512O也可以用相似的辦法來計算消息摘耍。對消息進行補位的 算法完全是一樣的。二、實驗內(nèi)容和步驟1算法分析本實驗用到了 openssl庫中提供的SHA1算法實現(xiàn)。有關(guān)SHA1算法的頭文件sha h, shajocl h 和mon h,根據(jù)所提供的文件分析SHA1算法的實現(xiàn)過程。下面簡單介紹所用到的結(jié)構(gòu)體變量和函數(shù)。程序中用到的結(jié)構(gòu)體變鼠: type def struct SHAstate_st _SHA_LONG hO.hth2Ji3.h4.SHA_LONGNlJ4h;SHA_LONG dataSHA_LBLOCK.int num.)
37、SHA_CTX;hO.hlth2.h3Ji4是第一個5個字的緩沖區(qū) data作為處理過程中的緩存,num存儲data中數(shù) 據(jù)的長度(字節(jié)數(shù)程序中用到的函數(shù)介紹如下:1)void SHAl_Imt(SHA_CTX *c)t丙數(shù)名稱:初始化函數(shù) 參數(shù)說明:C指向-個上而所提到的結(jié)構(gòu)體變量。初始化時把hOJil,h2.h3Ji4按照H0 = 0 x67452301Hl=0 xEFCDAB89H2 = 0 x98BADCFEH3 = 0 x10325476H4 = 0 xC3D2ElF0初始化.NINi, num初始化為02)void SHA l_Update(SHA_CTX *ct const vo
38、id *data, unsigned long len).函數(shù)名稱:-處理函數(shù)一參數(shù)說明:C指向經(jīng)過初始化函數(shù)處理過的結(jié)構(gòu)體變量。data指向待處理的信息len是data中信息的長度,以字節(jié)為單位這個函數(shù)對處理的信息以512bit為單位進行壓縮,不足的部分存儲在結(jié)構(gòu)體的data中,并用num指示信息的末尾。這樣下次調(diào)用時會接著上一次的結(jié)果進行。3)void SHA l_Fin al (unsigned char *md. SHA_CTX *c);函數(shù)名稱廠完成函數(shù)參數(shù)說明:md指向存儲結(jié)果的緩沖區(qū)c指向上面處理過的結(jié)構(gòu)體.這個函數(shù)對未完成的信息先進行padding操作,然后處理,并把最終結(jié)果存
39、在md指向的緩 沖區(qū)中。2使用實例分析下面的程序?qū)崿F(xiàn)了對-hello, world!-進行SHA1處理的功能,可以作為SHA1函數(shù)接【1的參 考。#inelude sha hinclude shajocl hMint main(void)SHA CTXc;unsigned char *m=hello.world1tout 16,SHAl_Imt(&c);SHAl_Update(&c,in,strlen(in)tSHA l_Fmal(out,&c);pnntf(whash 也為:n%sn,out)treturn 0.)說明:由丁程序中所用的結(jié)構(gòu)體只在初始化函數(shù)中賦初始值,其中間過程可以保留下來,
40、所以對 一段信息分多次處理可以得到同樣的結(jié)果。比如說使用下面的語句可以得到和例子中同樣的結(jié) 果:SHAl_Imt(&c), SHAl_Update(&c. hello;.6). SHAl_Update(&c. * world!,6). SHA l_Final(out&c);【思考題】第三次平均第三次半均-第三次平均第三次平均一-第三次平均 -第三次平均一平均-平均-平均 -半均平均平均速度(Mbps)第一次第二次第三次第一次第二次第三次平均一第一次第二次第三次半均第二次第三次平均一第二次第三次平均第二次第三次平均一一第二次第三次半均一一第二次第二次平均Build-2et Active Conf
41、igurations Win32 P.elease 機器主頻:內(nèi)存:操作系統(tǒng):循環(huán)次數(shù)LOOP_NIH4BER數(shù)據(jù)長度循環(huán)次數(shù)LOOP_NUMBER數(shù)據(jù)長度(兆比特,Mb)時間(秒)速度(Mbps)數(shù)據(jù)長度 第一次第二次第三次時間(秒)速度(Mbps)第一次第二次第三次平均1、簡述哈希函數(shù)的特點。2、SHA1算法的摘耍長度是多少?3、 測試SHA1算法的運算速度,填寫下列表格。SHA1算法速度大約是DES算法的務(wù)少倍? 注總:測試速度時,工程應(yīng)為release版.否則數(shù)據(jù)不笊確。平均第二次第三次平均4、編寫段程序,計算文件“信息安全技術(shù)實驗指導(dǎo)書”的摘耍,并給出摘耍值(用16進 制表示,例如摘
42、要值為:0A33D142 21 53 51 AC52 33D9 4B02D3 19 68 80 2E42C1)。注總:不要修改信息安全技術(shù)實驗指導(dǎo)書(文件最后修改日期為2012-5-14),確保摘要值 為固定值?!緦嶒瀳蟾孀珜懸蟆?)實驗報告紙到實驗室購買;2)實驗報告必須手寫,內(nèi)容如下:(1)實驗題目(2)實驗?zāi)康?3)實驗環(huán)境(4)實驗類型思考題實驗三郵件加密軟件PGP的使用【實驗?zāi)康摹客ㄟ^木實驗,讀者可以韋握以下技能:學(xué)會使用PGP創(chuàng)建密鑰對;學(xué)會使用PGP輸出和簽名公共密鑰;學(xué)會使用PGP和Outlook Express發(fā)送并接收加密的電子郵件?!緦嶒灜h(huán)境】Windows 2000
43、Server,需安裝Outlook. Express軟件【實驗類型】驗證性實驗【實驗學(xué)時】2學(xué)時【實驗內(nèi)容及步驟】一、 使用PGP創(chuàng)建密鑰對這一步將使用密鑰生成向?qū)擅荑€對.(1)通過Key Generauon Wizard對話框創(chuàng)建密鑰對。該對話框有兩種打開方式:一種是選擇“開 始” “程序” 一 “PGP” 一 “PGPkeys”:另一種是用右鍵點擊系統(tǒng)托盤區(qū)的PGP圖標,選擇 PGPkeys在 PGPKeys 對話框中選擇Keys New key X 如圖 1),打開 Key Generation Wizard 對話框(如圖l-2)o圖 1-1 選擇 “NewKey”圖 Key Gen
44、eration Wizard 對話框(2)點擊Key Generation Wizard對話框中的下一步,輸入用戶名和郵件地址,如圖13所/J a圖13選擇參數(shù)(3)點擊圖1-3中的下一步,將出現(xiàn)如圖14所示的對話框。在Passphrase欄內(nèi)可輸入一個 最少8個字符的密碼短語,確認后單擊“下一步”。圖1-4輸入密碼(4)PGP開始生成一個新的密鑰對.當密鑰對產(chǎn)生完畢厲,會出現(xiàn)一個完成的界面,點擊“完 成”,結(jié)束密鑰對的創(chuàng)建過程,如圖15所示。圖15密鑰對的生成(5)用戶可以在PGPkeys中査看到剛生成的公共密鑰,如圖所示。圖1-6密鑰査看二、 使用 PGP 輸出和簽名公共密鑰這一步將在兩臺
45、PC機之間通過Oudook Express交換公共密鑰,并在二者之間建立完全信 任關(guān)系。1輸出公鑰(1)用上而提到的方法打開FGFkeys。(2)用右鍵單擊剛才創(chuàng)建的密鑰,并選擇Export選項,如圖17所示。圖1-7公鑰輸出(3)此時出現(xiàn)一個Export Key to File對話框。選擇保存的目錄以及文件名,然后單擊“Save: 在選擇的目錄中將出現(xiàn)一個以asc為擴展名的文件,如圖1-8所示。注意,不耍保存私鑰。圖18選擇保存路徑及文件名(4)打開Outlook Express,將該文件作為附件發(fā)給對方2添加公鑰(1)收到對方的asc文件后,將其保存到桌面。(2)通過PGPKeys將該公鑰
46、文件添加到密鑰環(huán)中。(3)選擇Keys菜單中的ImportM (如圖 1-9 所示),將出現(xiàn)一個Select File Containing Key M對話框。選擇保存在桌面上的對方的公鑰文件,并單擊“打開”,如圖110所示.圖19打開對方公鑰圖110選擇公鑰文件4)此時將出現(xiàn)一個“Selectkey(s)”對話框(如圖1-11所示)。選中剛才添加的密鑰,并選擇 “Import”,則對方的密鑰出現(xiàn)在密鑰環(huán)中,但是沒有被簽名,所以不被信任。圖 1-11 Select key(s)對話框(5)用右鍵單擊該密鑰,并選擇“Sign”選項。(6)此時將出現(xiàn)PGP Sign Key對話框選中該密鑰并選擇u
47、Allow signature to be exportedv 復(fù)選框然后單擊“OKS如圖1-12所示。圖112公鑰導(dǎo)入7)此時系統(tǒng)提示耍求輸入密碼短語。輸入完后單擊“OKS則在PGPkeys中該密鑰旁邊出現(xiàn) 一個綠色的圖標,農(nóng)示它己經(jīng)被簽名。(8)用右鍵單擊該密鑰.并選擇44 Key Properties0選項。在出現(xiàn)的對話框底部.從44 Untrusted 滑動到“Trusted”,然后單擊“關(guān)閉”,如圖1J3所示。此時該密鑰被信任,可以用來安全地交 換信息了。圖1J3公鑰添加完成三.使用PGP和Outlook Express發(fā)送加密的電子郵件1發(fā)送加密的電子郵件(1)通過Outlook Express編寫郵件內(nèi)容。注意:如果發(fā)送包含敏感信息的郵件,則標題欄必須為空白或標題內(nèi)容不能包含泄露正文 內(nèi)容的信息。(2)當完成郵件正文的編寫后,點擊加密郵件正文,然后點擊對內(nèi)容進行簽名,如圖1J4所示。 注意:不要與Outlook Express自帶的加密、簽名圖標弄混了。圖M4郵件加密示意
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 24589.1-2024財經(jīng)信息技術(shù)會計核算軟件數(shù)據(jù)接口第1部分:企業(yè)
- GB/T 23718.5-2024機器狀態(tài)監(jiān)測與診斷人員資格與人員評估的要求第5部分:潤滑劑實驗室技術(shù)人員/分析人員
- SOTS-1-technical-grade-生命科學(xué)試劑-MCE-9410
- N-Propionitrile-Chlorphine-hydrochloride-生命科學(xué)試劑-MCE-1679
- Cy3-PEG-Amine-生命科學(xué)試劑-MCE-8875
- AH-8529-生命科學(xué)試劑-MCE-1699
- 1-2-3-Tri-10-Z-undecenoyl-glycerol-生命科學(xué)試劑-MCE-6075
- 2025年度藥品推廣與醫(yī)藥行業(yè)協(xié)會合作推廣協(xié)議
- 二零二五年度智能制造產(chǎn)業(yè)股權(quán)轉(zhuǎn)移合同終止書
- 2025年度工業(yè)機器人維護保養(yǎng)與故障排除維修合同
- 煤場用車輛倒運煤的方案
- 《預(yù)防犯罪》課件
- 【企業(yè)作業(yè)成本在上海汽車集團中的應(yīng)用研究案例7300字(論文)】
- 《民航服務(wù)溝通技巧》教案第6課巧妙化解沖突
- 化學(xué)用語專項訓(xùn)練
- 《了凡四訓(xùn)》課件
- 醫(yī)院住院病人健康教育表
- 風(fēng)險矩陣法(詳細)
- 實驗室供應(yīng)商評價的5個基本步驟
- 電力公司工程勘察設(shè)計管理辦法
評論
0/150
提交評論