freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

des算法的實現(xiàn)及安全性分析畢業(yè)論文-資料下載頁

2025-03-02 23:44本頁面
  

【正文】 lainBlock + count,39。\039。,7 count)。 plainBlock[7] = 8 count。 DES_EncryptBlock(plainBlock,subKeys,cipherBlock)。 fwrite(cipherBlock,sizeof(char),8,cipher)。 } fclose(plain)。 22 fclose(cipher)。 return OK。 } //解密文件 int DES_Decrypt(char *cipherFile, char *keyStr,char *plainFile){ FILE *plain, *cipher。 int count,times = 0。 long fileLen。 ElemType plainBlock[8],cipherBlock[8],keyBlock[8]。 ElemType bKey[64]。 ElemType subKeys[16][48]。 if((cipher = fopen(cipherFile,rb)) == NULL) { return CIPHER_FILE_OPEN_ERROR。 } if((plain = fopen(plainFile,wb)) == NULL) { return PLAIN_FILE_OPEN_ERROR。 } //設(shè)置密鑰 memcpy(keyBlock,keyStr,8)。 Char8ToBit64(keyBlock,bKey)。 DES_MakeSubKeys(bKey,subKeys)。 fseek(cipher,0,SEEK_END)。 //將文件指針置尾 fileLen = ftell(cipher)。 //取文件指針當(dāng)前位置 rewind(cipher)。 //將文件指針重指向文件頭 while(1){ fread(cipherBlock,sizeof(char),8,cipher)。 DES_DecryptBlock(cipherBlock,subKeys,plainBlock)。 times += 8。 if(times fileLen){ fwrite(plainBlock,sizeof(char),8,plain)。 } else{ break。 } } //判斷末尾是否被填充 if(plainBlock[7] 8){ for(count = 8 plainBlock[7]。 count 7。 count++){ if(plainBlock[count] != 39。\039。){ break。 } } } if(count == 7){//有填充 fwrite(plainBlock,sizeof(char),8 plainBlock[7],plain)。 } else{//無填充 fwrite(plainBlock,sizeof(char),8,plain)。 } fclose(plain)。 fclose(cipher)。 return OK。 } 23 int main(){ clock_t a,b。 a = clock()。 DES_Encrypt(,)。 b = clock()。 printf(加密消耗 %d毫秒 \n,ba)。 system(pause)。 a = clock()。 DES_Decrypt(,)。 b = clock()。 printf(解密消耗 %d毫秒 \n,ba)。 getchar()。 return 0。 } DES算法安全性問題 ① DES算法密鑰的長度 最初的羅斯福密碼中密鑰長度為 128位, DES的加密單位僅有 64位二進制,而且其中某些位還要用于奇偶校驗或其他通訊開銷, 有效密鑰只有 56位 , 這對于數(shù)據(jù)傳輸來說太小,各次迭代中使用的密鑰 Ki是遞推產(chǎn)生的,這種相關(guān)性必然降低了密碼體制的安全性。因此, 人們會對 56位密鑰的安全性產(chǎn)生質(zhì)疑,那么 56位密鑰是否 足夠,已成為人們爭論的焦點之一。 至今,最有效的破解 DES算法的方法是窮舉搜索法,那么 56位長的密鑰總共要測試 256次,如果每 100毫秒可以測試 1次,那么需要 1015秒,大約是 228,493,000年。但是,仍有學(xué)者認為在可預(yù)見的將來 用窮舉法尋找正確密鑰已趨于可行,所以若要安全保護 10年以上的數(shù)據(jù)最好不用 DES算法。 近年來有人提出用差分和線性攻擊方案來破解 DES算法,雖然,從理論上來說破譯的性能高于窮舉搜索法,但要有超高速計算機提供支持,以致于 美國國家保密局和計算機科學(xué)技術(shù)學(xué)會 組織各界專家研究 DES密碼體制的安全性問題后,得出樂觀的結(jié)論:沒有任何可以破譯 DES密碼體制的系統(tǒng)分析法。若使用窮舉法,則在 1990年以前基本上不可能產(chǎn)生出每天能破譯一個 DES密鑰的專用計算機。即使屆時能制造出這樣的專用機,它的破譯成功率也只會在 ,而且造價可能高達幾千萬美元。根據(jù)目前的計算技術(shù)和 DES的分析情況,16圈 DES(采用 16輪迭代)仍然是安全的,但提醒使用者不要使用低于 16圈的 DES,特別是10圈以下的 DES。 盡管如此,我們?nèi)匀恍枰紤]對 DES算法進行改進,使密鑰長度增加些 ,以實現(xiàn)更好的保密功能。 ② 多重 DES算法 針對 DES算法上的缺陷,各國專家們都在研究如何增強 DES算法的安全性,現(xiàn)在已發(fā)展出幾十種改進的 DES,經(jīng)過比較,筆者認為多重 DES具有較高的可行性。 為了增加密鑰的長度,采用多重 DES加密技術(shù),將分組密碼進行級聯(lián),在不同的密鑰作用下,連續(xù)多次對一組明文進行加密。針對 DES算法,專家們的共識是采用③重 DES加密算法。③重 DES方法需要執(zhí)行③次常規(guī)的 DES加密步驟,但最常用的③重 DES算法中僅僅用兩個 56位DES密鑰。假設(shè)這兩個密鑰為 K1與 K2,其 算法的步驟是: 24 ( 1)用密鑰 K1進行 DES加密; ( 2)用步驟 1的結(jié)果使用密鑰 K2進行 DES解密; ( 3)用步驟 2的結(jié)果使用密鑰 K1進行 DES加密。 這個過程稱為 EDE(加密 解密 加密 )。 三重 DES可使加密密鑰長度擴展到 128位,其中有效 112位。三重 DES的 112位密鑰長度在可以預(yù)見的將來可認為是合適的、安全的, 據(jù)稱,目前尚無人找到針對此方案的攻擊方法。 因為要破譯它可能需要嘗試 256個不同的 56位密鑰直到找到正確的密鑰。但是三重 DES的時間是DES算法的 3倍,時間開銷較大。 ③避開 DES算法漏洞,實現(xiàn)安全管理 在 DES密鑰 Key的使用、管理及密鑰更換的過程中,應(yīng)絕對避開 DES算法的應(yīng)用誤區(qū),即:絕對不能把 Key的第 1 24? 64位作為有效數(shù)據(jù)位,來對 Key進行管理。 從上述 DES算法的描述中知道,每個字節(jié)的第 8位作為奇偶校驗位以確保密鑰不發(fā)生錯誤,這 8位不參與 DES運算。 因此,特別推薦給金融銀行界及非金融業(yè)界的領(lǐng)導(dǎo)及決策者們,尤其是負責(zé)管理密鑰的人,要對此點予以高度重視。有的銀行金融交易網(wǎng)絡(luò),利用定期更換 DES密鑰 Key的辦法來進一步提高系統(tǒng)的安全性和可靠性,如果 忽略了上述應(yīng)用誤區(qū),那么,更換新密鑰將是徒勞的,將威脅到金融交易網(wǎng)絡(luò)的安全運行,所以更換密鑰一定要保證新 Key與舊 Key真正的不同,即除了第 1 24? 64位以外其它位數(shù)據(jù)發(fā)生了變化, 這樣才能保證 DES算法安全可靠發(fā)揮作用, 須務(wù)必對此保持高度重視。 現(xiàn)代密碼學(xué)的特征是算法可以公開。保密的關(guān)鍵是如何保護好自己的密鑰,而破密的關(guān)鍵則是如何能破解得到密鑰。系統(tǒng)的安全主管者,要根據(jù)本系統(tǒng)實際所使用的密鑰長度與其所保護的信息的敏感程度、重要程度以及系統(tǒng)實際所處安全環(huán)境的惡劣程度,在留有足夠的安全系數(shù)的條件下來確定 其密鑰和證書更換周期的長短。同時,將已廢棄的密鑰和證書放入黑庫歸檔,以備后用。密鑰更換周期的正確安全策略是系統(tǒng)能夠安全運行的保障,是系統(tǒng)的安全管理者最重要、最核心的日常工作任務(wù)。 ④弱密鑰 在 DES算法中存在 12個半弱密鑰和 4個弱密鑰。由于在子密鑰的產(chǎn)生過程中,密鑰被分成了 2個部分,如果這 2個部分分成了全 0或全 1,那么每輪產(chǎn)生的子密鑰都是相同的,當(dāng)密鑰是全 0或全 1,或者一半是 1或 0時,就會產(chǎn)生弱密鑰或半弱密鑰, DES算法的安全性就會變差。在設(shè)定密鑰時應(yīng)避免弱密鑰或半弱密鑰的出現(xiàn)。 防范 /破譯分析 破 譯者根據(jù)明文和密文反算出相應(yīng)的 K、 LO、 RO和 x(L16和 1t16),進而推理 K KK3 ...K16 ,便可得到密鑰 (Key),但是明文參與 K1, ...K16的生成,因此,試算 K1...K16極其困難,然而 ,在現(xiàn)實情況下 ,破譯者只要根據(jù)密文得出明文就能達到目的,不用破譯出密鑰 (Key)。 在 POS、 ATM、磁卡及智能卡 (IC卡 )、加油站 、高速公路收費站以及網(wǎng)上電子銀行等領(lǐng)域, DES算法用來實現(xiàn)用戶口令密碼的保密,如信用卡持卡人的 PIN碼加密傳輸。很多情況下個人用戶常常用自己名字的拼、親朋好友 名字的拼音、好記的英語單詞、出生年月等為口令密碼,而且口令密碼長度常在 6~ 12個字母,其中 8~ 10個字母的概率更大。 在有些領(lǐng)域只能用 0 到 9這 10個數(shù)來當(dāng)口令密碼,并且長度常為 6~ 8個字母。破譯者試算出 K,進而得出明文 (口令密碼 )的難度大大降低,如果破譯者熟悉應(yīng)用領(lǐng)域,試算出 K會變得更容易。 在上述情況下,為提高安全性能,可在明文 (口令密碼 )初始置換之前,用傳統(tǒng)的加密法 25 進行 加密,使明文變得無含義,生成第二明文 ,然后對第二明文進行 DES加密。 DES算法的應(yīng)用 自 DES算法頒布 之后,引起了學(xué)術(shù)界和企業(yè)界的廣泛重視。許多廠家很快生產(chǎn)出實現(xiàn) DES算法的硬件產(chǎn)品,廣大用戶在市場上買到高速而又廉價的 DES硬件產(chǎn)品之后,開始用它加密自己的重要數(shù)據(jù),從而大大推廣了密碼技術(shù)的使用。 DES算法的入口參數(shù)有 3個: Key、 Data、 Mode。其中 Key為 8個字節(jié)共 64位,是 DES算法的工作密鑰; Data也為 8個字節(jié) 64位,是要被加密或被解密的數(shù)據(jù); Mode為 DES的工作方式,有兩種:加密和解密。 DES算法是這樣工作的:如 Mode為加密,則用 Key去把數(shù)據(jù) Data進行加密,生成 Data的密 碼形式( 64位)作為 DES的輸出結(jié)果;如 Mode為解密,則用 Key去把密碼形式的數(shù)據(jù) Data解密,還原為 Data的明碼形式( 64位)作為 DES的輸出結(jié)果。 在通信網(wǎng)絡(luò)的兩端,雙方約定了一致的 Key,在通信的源點用 Key對核心數(shù)據(jù)進行 DES加密,然后以密碼形式在公共通信網(wǎng)(如電話網(wǎng))中傳輸?shù)酵ㄐ啪W(wǎng)絡(luò)的終點,數(shù)據(jù)到達目的地后,用同樣的 Key對密碼數(shù)據(jù)進行解密,便再現(xiàn)了明碼形式的核心數(shù)據(jù)。這樣,便保證了核心數(shù)據(jù)(如 PIN、 MAC等)在公共通信網(wǎng)中傳輸?shù)陌踩院涂煽啃浴Mㄟ^定期在通信網(wǎng)絡(luò)的源端和目的端同時改 用新的 Key,便能更進一步提高數(shù)據(jù)的保密性,這正是現(xiàn)在金融交易網(wǎng)絡(luò)的流行做法。 在 .NET開發(fā)系統(tǒng)中,微軟公司提供了 DES公用密鑰的加密類,使用它,我們可以自己編制自己的標(biāo)準(zhǔn) DES加密算法。在任何一個單位,程序員只要設(shè)計此程序就能對零散離散文件進行加密傳輸,而如果要和其他單位交換數(shù)據(jù),由于使用的公用算法,只需要向?qū)Ψ教峁┟荑€及算法說明即可,使用非常方便。 結(jié)束語 DES算法對大量明文數(shù)據(jù)加密具有極高的安全性,但對少量明文數(shù)據(jù)加密的安全性較差。本文通過分析 DES算法對明文的實質(zhì)加密過程,可以看出,在應(yīng)用 DES算法的某些領(lǐng)域, DES算法應(yīng)用還存在不足,破譯者較易得出明文,將嚴重影響 DES算法的安全強度,必須進一步加強安全防范。
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1