




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、成都信息工程學(xué)院課程設(shè)計(jì)報(bào)告SHA256摘要軟件的實(shí)現(xiàn)課程名稱:應(yīng)用密碼算法程序設(shè)計(jì) 學(xué)生姓名: 金文慧 學(xué)生學(xué)號(hào): 2006122001 專業(yè)班級(jí): 06級(jí)信息安全一班 任課教師: 張金全 2009年 4 月 14 日附件:課程設(shè)計(jì)成績(jī)?cè)u(píng)價(jià)表指導(dǎo)老師評(píng)閱成績(jī)表學(xué)習(xí)與工作態(tài)度(30%)選題的價(jià)值與意義(10%)文獻(xiàn)綜述(10%)研究水平與設(shè)計(jì)能力(20%)課程設(shè)計(jì)說明說(論文)撰寫質(zhì)量(20%)學(xué)術(shù)水平與創(chuàng)新(10%)總分指導(dǎo)老師簽名: 年 月 日課程設(shè)計(jì)答辯記錄及評(píng)價(jià)表學(xué)生講述情況教師主要提問記錄學(xué)生回答問題情況答辯評(píng)分評(píng)分項(xiàng)目分值評(píng)價(jià)參考標(biāo)準(zhǔn)評(píng)分總分優(yōu)良中及格差選題的價(jià)值與意義109876
2、4文獻(xiàn)綜述1098764研究水平與設(shè)計(jì)能力201917151310課程設(shè)計(jì)說明書(論文)撰寫質(zhì)量201917151310學(xué)術(shù)水平與創(chuàng)新1098764答辯效果302825221915是否同意論文(設(shè)計(jì))通過答辯同意 不同意答辯小組成員簽名答辯小組組長(zhǎng)簽名: 年 月 日課程設(shè)計(jì)成績(jī)?cè)u(píng)定表成績(jī)匯總評(píng)分項(xiàng)目評(píng)分比例分?jǐn)?shù)課程設(shè)計(jì)總分指導(dǎo)老師評(píng)分50%答辯小組評(píng)分50%目 錄1引言11.1 背景11.2 目的11.3 本設(shè)計(jì)的主要任務(wù)12.系統(tǒng)設(shè)計(jì)12.1主要軟件需求(運(yùn)行環(huán)境)12.2 系統(tǒng)結(jié)構(gòu)22.2.1軟件操作流程22.2.2功能模塊23 系統(tǒng)功能程序設(shè)計(jì)23.1 SHA256構(gòu)造23.2初始化33
3、.3計(jì)算33.4摘要53.5 SHA256析構(gòu)63.12部分關(guān)鍵外部接口設(shè)計(jì)63.13程序界面預(yù)覽74. 測(cè)試報(bào)告81文本測(cè)試82文件測(cè)試85參考資料96結(jié)論9參考文獻(xiàn)91引言1.1 背景SHA (Secure Hash Algorithm,譯作安全散列算法) 是美國(guó)國(guó)家安全局 (NSA) 設(shè)計(jì),美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院 (NIST) 發(fā)布的一系列密碼散列函數(shù)。正式名稱為 SHA 的家族第一個(gè)成員發(fā)布于 1993年。此外有四種變體,以提升輸出的范圍和變更一些細(xì)微設(shè)計(jì): SHA-256,就是其中之一。1.2 目的在網(wǎng)絡(luò)中傳輸?shù)男畔?,有時(shí)會(huì)遭到各種攻擊。接收者需要有一種機(jī)制來驗(yàn)證自己收到的信息來源
4、是否真實(shí),信息是否完整,驗(yàn)證信息在傳送或存儲(chǔ)過程中未篡改,重放或延遲等。SHA-256可以對(duì)消息進(jìn)行摘要,生成固定長(zhǎng)度的消息摘要,隨信息一起發(fā)送,可以驗(yàn)證信息的真實(shí)完整性。1.3 本設(shè)計(jì)的主要任務(wù)根據(jù)SHA-256算法實(shí)現(xiàn)任意長(zhǎng)度的文本,任意大小任意格式的文件進(jìn)行摘要,并生成固定長(zhǎng)度的消息摘要。向用戶提供良好的界面,良好的操作性。2.系統(tǒng)設(shè)計(jì)2.1主要軟件需求(運(yùn)行環(huán)境)本軟件適用VC語言編寫,編譯成功后的EXE文件可以在裝有windows系統(tǒng)的任何計(jì)算機(jī)上使用。輸入: 二進(jìn)制,十六進(jìn)制,ASCII碼等格式的信息,也可以是漢字或英文,或者是文本文檔,可以是多個(gè)分組;也可以是各種類型的文件;輸出
5、:512位固定長(zhǎng)度的消息摘要;注:對(duì)于本軟件所涉及到的輸入,輸入字符均以ASCII碼和UNICODE碼處理輸出字符均是16進(jìn)制數(shù)。測(cè)試平臺(tái):Windows XP 2.2 系統(tǒng)結(jié)構(gòu)2.2.1軟件操作流程摘要文本:(1)選擇“文本”,程序?qū)⒆詣?dòng)使“文件”相關(guān)的的輸入框和按鈕無效,避免不當(dāng)操作。軟件默認(rèn)選擇“文本”。(2)在文本輸入框中輸入要加密的文本,文本可以是二進(jìn)制數(shù),十六進(jìn)制數(shù),十進(jìn)制數(shù),英文,符號(hào),漢字等。系統(tǒng)將輸入的文本以ASCII碼處理,漢字以UNICODE碼處理。(3)點(diǎn)擊“文本加密GO”按鈕,進(jìn)行摘要。(4)摘要完成后,系統(tǒng)自動(dòng)顯示輸入消息的長(zhǎng)度及摘要后的摘要值。(5)如需繼續(xù)摘要文
6、本,可在文本框內(nèi)重新輸入信息。(6)使用完畢,點(diǎn)擊“關(guān)閉”按鈕,關(guān)閉軟件。摘要文件:(1)選擇“文件”選項(xiàng),程序?qū)⑹埂拔谋尽毕嚓P(guān)的輸入框和按鈕無效,避免不當(dāng)操作。(2)在輸入框中輸入文件路徑或點(diǎn)擊“瀏覽”按鈕,彈出系統(tǒng)文件菜單,選擇要摘要的文件,系統(tǒng)自動(dòng)在輸入框中顯示文件路徑。(3)點(diǎn)擊“文件摘要GO”按鈕,進(jìn)行摘要。(4)摘要完成后,窗口自動(dòng)顯示摘要值。(5)如需繼續(xù)使用,可重新選擇文件。(6)使用完畢,點(diǎn)擊“關(guān)閉”按鈕,關(guān)閉軟件。2.2.2功能模塊編 號(hào)模 塊 名 稱模 塊 標(biāo) 識(shí)1SHA256構(gòu)造Csha256:Sha256_init2初始化Csha256:Sha256_reset3計(jì)算
7、Csha256:Sha256_calculate4摘要Csha256:Sha256_Block5SHA256析構(gòu)Csha256:Sha256_uninit3 系統(tǒng)功能程序設(shè)計(jì) 3.1 SHA256構(gòu)造這個(gè)函數(shù)其實(shí)就是構(gòu)建一個(gè)SHA256類,調(diào)用Csha256:Sha256_reset函數(shù),返回一個(gè)Csha256類的指針signed long Csha256:Sha256_init(Csha256* t )return Sha256_reset( t ); 3.2初始化初始化函數(shù),將準(zhǔn)備字和數(shù)據(jù)置零,初始化h0-h7signed longCsha256:Sha256_reset(Csha256*
8、 t )/*初始化函數(shù)*/ int x;t->reg0=0x6a09e667;t->reg1=0xbb67ae85;t->reg2=0x3c6ef372;t->reg3=0xa54ff53a;t->reg4=0x510e527f;t->reg5=0x9b05688c;t->reg6=0x1f83d9ab;t->reg7=0x5be0cd19; /*h0-h7初始化*/for( x = 0; x < 16; x + ) t->Padding x = t->DwordBuf x = 0; t->ByteNumLo = t-&g
9、t;ByteNumHi = t->DwordBufBytes = 0;return 0; 3.3計(jì)算這個(gè)函數(shù)的功能是對(duì)輸入的數(shù)據(jù)進(jìn)行分組和填充處理,調(diào)用block函數(shù)進(jìn)行計(jì)算,并將最后的摘要結(jié)果寫入value數(shù)組。對(duì)于那些長(zhǎng)度達(dá)到64字節(jié)的數(shù)據(jù)塊,調(diào)用block函數(shù)進(jìn)行處理對(duì)于長(zhǎng)度不足64字節(jié)的數(shù)據(jù)塊,要進(jìn)行數(shù)據(jù)填充。在最后一塊數(shù)據(jù)的最后兩個(gè)字節(jié)要添加數(shù)據(jù)長(zhǎng)度。signed longCsha256:Sha256_calculate(Csha256* t, char* dp, signed long dl )/* x - 數(shù)據(jù)緩沖區(qū)偏移y - 字節(jié)偏移值 * 8z - 已處理的數(shù)據(jù)w -
10、64Bytes塊數(shù)*/z = (int)( t->ByteNumLo & 0x7fffffff ) + dl);x = ( t->ByteNumLo >> 31 ) & 0x01 ) + ( z >> 31 ) & 0x01 );z = ( z & 0x7fffffff ) | ( x << 31 );y = t->ByteNumHi + ( x >> 1 );if( y > 0x1fffffff )/*超過這個(gè)值的話,當(dāng)前的系統(tǒng)無法處理*/ return 10; t->ByteNum
11、Lo = z; t->ByteNumHi = y;for( w = 0; w < 16; w + ) t->Padding w = t->DwordBuf w ; /*前16個(gè)準(zhǔn)備字填充以數(shù)據(jù)*/for( w = 0; w < 8; w + ) reg w = t->reg w ; /*最初的h0-h7填充*/x = t->DwordBufBytes / 4;y = ( t->DwordBufBytes & 3 ) * 8;w = (int)( t->DwordBufBytes + dl ) >> 6 ) & 0
12、x03ffffff );z = 0;/* 64Bytes 整數(shù)據(jù)塊循環(huán)*/while( w > 0 )while( x < 16 )t->Padding x = ( t->Padding x & ( 0x000000ff << ( 24 - y ) | ( dp z & 0x000000ff ) << ( 24 - y );y = y + 8; x += ( y >> 5 ); y &= 0x1f; z +; Sha256_Block( t->Padding, reg );x = y = 0; w -;/
13、* 清空數(shù)據(jù) */if( x | y ) = 0 )for( w = 0; w < 16; w + ) t->DwordBuf w = t->Padding w = 0; /* 最后一塊數(shù)據(jù)循環(huán)z 是已經(jīng)處理的數(shù)據(jù)數(shù). dl 是要處理的總數(shù)據(jù)的大小,dl大于z. */w = (int)( dl - z ); while( w > 0 )t->DwordBuf x = t->Padding x = ( t->Padding x & ( 0x000000ff << ( 24 - y ) | ( dp z & 0x000000ff
14、 ) << ( 24 - y );y = y + 8; x += ( y >> 5 ); y &= 0x1f; z +;w -;/* 填數(shù)據(jù)1后面跟一串0 */t->Padding x |= 0x00000080 << ( 24 - y ); /* 檢查數(shù)據(jù)長(zhǎng)度有沒有超過55字節(jié)*/t->DwordBufBytes = x * 4 + ( y >> 3 );if( t->DwordBufBytes > 55 )Sha256_Block( t->Padding, reg );for( w = 0; w <
15、 16; w + ) t->Padding w = 0; /* 添加數(shù)據(jù)長(zhǎng)度 */t->Padding 15 = t->ByteNumLo << 3;t->Padding 14 = ( t->ByteNumLo >> 29 ) & 0x3 ) | ( t->ByteNumHi << 3 );Sha256_Block( t->Padding, reg );3.4摘要對(duì)每一組數(shù)據(jù)進(jìn)行處理,使用SHA256的6個(gè)邏輯函數(shù)。進(jìn)行64輪迭代計(jì)算。得到每一組數(shù)據(jù)的處理結(jié)果。signed longCsha256:Sha25
16、6_Block( int* dp, int* rp )for( x = 16; x < 64; x + )t0 = ( dp x - 15 >> 7 ) & 0x1ffffff ) | ( dp x - 15 << 25 ) ( dp x - 15 >> 18 ) & 0x3fff ) | ( dp x - 15 << 14 ) ( dp x - 15 >> 3 ) & 0x1fffffff );/*0函數(shù)*/t1 = ( dp x - 2 >> 17 ) & 0x7fff ) | (
17、 dp x - 2 << 15 ) ( dp x - 2 >> 19 ) & 0x1fff ) | ( dp x - 2 << 13 ) ( dp x - 2 >> 10 ) & 0x3fffff );/*1函數(shù)*/dp x = dp x - 16 + t0 + dp x - 7 + t1;a = rp0; b = rp1; c = rp2; d = rp3; e = rp4; f = rp5; g = rp6; h = rp 7 ;/*主循環(huán) */for( x = 0; x < 64; x + )t2 = ( a >
18、> 2 ) & 0x3fffffff ) | ( a << 30 ) ( a >> 13 ) & 0x7ffff ) | ( a << 19 ) ( a >> 22 ) & 0x3ff ) | ( a <<10 );/*0函數(shù)*/t0 = ( a & b ) ( a & c ) ( b & c );/*Maj函數(shù)*/t2 = t2 + t0;t1 = ( e >> 6 ) & 0x3ffffff ) | ( e << 26 ) ( e >>
19、; 11 ) & 0x1fffff ) | ( e << 21 ) ( e >> 25 ) & 0x7f ) | ( e << 7 );/*1函數(shù)*/t0 = ( e & f ) (e) & g );/*Ch函數(shù)*/t1 = h + t1 + t0 + Sha256_k x + dp x ;h=g; g=f; f=e; e=d+t1; d=c; c=b; b=a; a=t1+t2; rp0 += a; rp1 += b; rp2 += c; rp3 += d; rp4 += e; rp5 += f; rp6+=g; rp7+=
20、h;return 0;3.5 SHA256析構(gòu)返回一個(gè)0值signed longCsha256:Sha256_uninit(Csha256* t ) return 0; 3.12部分關(guān)鍵外部接口設(shè)計(jì)如下表:接口名稱接口類型接口功能選擇文本摘要無線按鈕選擇文本摘要方式選擇文件摘要無線按鈕選擇文件摘要方式文本文本框輸入要摘要的文本文本摘要按鈕進(jìn)行文本摘要 文件路徑文本框輸入要摘要的文件的路徑瀏覽按鈕瀏覽電腦中的文件路徑并選擇要摘要的文本文件摘要按鈕進(jìn)行文件摘要文本長(zhǎng)度文本框顯示文本長(zhǎng)度摘要值文本框輸出摘要值清空文本框按鈕清空文本框內(nèi)容,將文本長(zhǎng)度置零清空摘要按鈕清空摘要內(nèi)容退出按鈕退出程序3.13
21、程序界面預(yù)覽程序運(yùn)行后生成的界面如下:運(yùn)行后默認(rèn)的選擇是“文本”摘要,在文本框內(nèi)輸入要摘要的文本。文本可以是二進(jìn)制數(shù),十六進(jìn)制數(shù),十進(jìn)制數(shù),英文,符號(hào),漢字等。點(diǎn)擊“文本摘要GO”按鈕,生成固定長(zhǎng)度的摘要值。選擇“文件”并確定文件路徑,文件可以是文本文件,或者其他任何格式的文件。點(diǎn)擊“文件摘要GO”按鈕,生成固定長(zhǎng)度的摘要4. 測(cè)試報(bào)告1文本測(cè)試(1)數(shù)字1234567890消息長(zhǎng)度:10摘要值:c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646(2)小寫字母a消息長(zhǎng)度:1摘要值:ca978112ca1bbdcafa
22、c231b39a23dc4da786eff8147c4e72b9807785afee48bb(3)大寫字母A消息長(zhǎng)度:1摘要值:559aead08264d5795d3909718cdd5abd49572e84fe55590eef31a88a08fdffd(4)大小寫字母混合aBcDeFgHi消息長(zhǎng)度:9摘要值:5ba4d59ca7520b5f8a6eb48be70f9c6e8d0f3490d859ea86aa0d8fe5578b6(5)漢字無敵超人消息長(zhǎng)度:8(一個(gè)漢字2字節(jié))摘要值:bb85a565a7957e8ac468bfd91c57a344a508b297158b13fd9527aba
23、6d3688c8(6)其他字符!#¥%&*()(*&%¥&*()、;【】、。,?:消息長(zhǎng)度:75摘要值:2ecdbdeca6b6b15e7da954a7b68994c44e44b88b4f9639835fea3b2b64ad62文件測(cè)試(1)文本文件文件內(nèi)容:a摘要值:ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb(2)文本文件文件內(nèi)容:無敵超人摘要值:bb85a565a7957e8ac468bfd91c57a344a508b297158b13fd9527aba6d3688c8(3)word文檔文件內(nèi)容:a摘要值:ad706c96796b7bb53082168be0de685ffb4fbe385cc1b9da28add969d39c17(4)其他文件測(cè)試了音頻文件,.C文件,.h文件,均能得出摘要值。經(jīng)過檢測(cè):1,本軟件能進(jìn)行正常的消息摘要,通過對(duì)比書上的摘要值,本軟件摘要結(jié)果沒有錯(cuò)誤。2,對(duì)于長(zhǎng)度不足的分組,可以通過填充來按照格式補(bǔ)滿。3,對(duì)于錯(cuò)誤的輸入,能用彈出窗口的方式加
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 白樺林主題思想深度解讀:初三語文課文教案
- 語文教育與文化傳播考試卷
- 地產(chǎn)廣告物料加工承攬合同
- 應(yīng)急照明考試試題及答案
- 銀行協(xié)同考試試題及答案
- 銀川三模考試試題及答案
- 六一公司安排活動(dòng)方案
- 六一創(chuàng)意小區(qū)活動(dòng)方案
- 六一宴會(huì)活動(dòng)方案
- 六一幼兒獎(jiǎng)勵(lì)活動(dòng)方案
- 語文綜合實(shí)踐《走進(jìn)傳統(tǒng)節(jié)日探尋文化根脈》課件-【中職專用】高一語文同步課件(高教版2023·基礎(chǔ)模塊下冊(cè))
- 風(fēng)力發(fā)電設(shè)備維修合同
- 跨文化交際智慧樹知到期末考試答案章節(jié)答案2024年蘇州大學(xué)
- TSG-T7001-2023電梯監(jiān)督檢驗(yàn)和定期檢驗(yàn)規(guī)則宣貫解讀
- 地質(zhì)行業(yè)安全培訓(xùn)課件
- PDCA提高臥床患者踝泵運(yùn)動(dòng)的執(zhí)行率
- 中醫(yī)培訓(xùn)課件:《中藥熱奄包技術(shù)》
- 小班健康:不亂扔垃圾
- 萬科物業(yè)管理公司員工手冊(cè)
- 機(jī)器學(xué)習(xí)在教育領(lǐng)域的應(yīng)用研究
- 電力電氣 紡織廠供配電系統(tǒng)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論