MD5加密算法在C#上的基本應(yīng)用

1 WEB SYSTEM密鑰安全性能分析

當(dāng)今的各種IT 系統(tǒng)都存在著設(shè)置用戶名和 密碼的環(huán)節(jié),但如今存在著各種黑客軟件能夠破 解系統(tǒng)密碼[1],對系統(tǒng)進行非法的登錄和破壞,其安全性能存在著隱患。為了防止外人非法進入系 統(tǒng),對系統(tǒng)中的重要數(shù)據(jù)進行盜用,就必須對密鑰 進行加鎖,即對密碼字符進行加密?,F(xiàn)在常用的 加密算法有4 種,它們分別是 SHA 加密算法、 RSA加密算法、DES加密算法和 MD5加密算法。 由于目前的IT 系統(tǒng)加密基本上采用 MD5加密算法對password進行加密,所以文中就 MD5加 密算法進行簡單的介紹,并在IT 系統(tǒng)中做一些 實際應(yīng)用改進,增強其在實踐應(yīng)用中被破解的難度。

2 ?IT系統(tǒng)中 MD5加密算法概述

rsa data security inc 的 ronald 1.Rivestmit 和laboratory for computer science?在90年代初 研究 出 了 MD5 加 密 算 法,即 信 息摘 要 算 法 Message-Digest algorithm 5 經(jīng)過md2代md3代以及md4代的發(fā)展應(yīng)用演化而來,就是把一個任意長度的字節(jié)串變換成一定長的大整數(shù)[3]。  

MD5算法還應(yīng)用到了數(shù)據(jù)結(jié)構(gòu)中的散列算 法等思路,它是以512位的分組來處理輸入系統(tǒng) 中字符數(shù)據(jù),而且每一個分組又可以分為16個的 32位子分組,經(jīng)過算法的一系列處理之后,最后4 組得到32位的分組,將這4組的32位分組進行 級聯(lián)處理后將得到一串128的散列值,算法最后 得到的字符導(dǎo)入數(shù)據(jù)中有32位和16位兩種。   

一般系統(tǒng)都是直接將加密的md5密鑰值導(dǎo) 入到數(shù)據(jù)庫中,如果網(wǎng)站存在注入性攻擊或者安 全隱患時,破壞者很可能就獲取系統(tǒng)中客戶的密 碼字符,或者通過黑客網(wǎng)站中的md5在線查詢可 以得到用戶的密碼[5]。

3 IT系統(tǒng)中 MD5加密算法的應(yīng)用和改進 思路

  MD5算法由于在商業(yè)領(lǐng)域中的使用可以免 費,又加上該算法具有健壯的安全性,使得該算法 被廣泛應(yīng)用,目前在文件完整性校驗、密碼加密以 及數(shù)字簽名等方面有較好的應(yīng)用?;诖耍旅?提出了一種 MD5加密算法在口令加密方面的改 進思路:  

1)先進行 MD5加密,得到32位和16位的密文值,并且利用內(nèi)部排序算法對加密后的數(shù)值進行排序[6]MD5 - SORT(assword)。

2)最終利用疊加的思想得到的密碼值為 P=H(Encrt-wd)&rand - ke(number),導(dǎo)入yppy數(shù)據(jù)庫。

密碼的驗證過程和加密過程有些相似,先對 輸入系統(tǒng)中的密碼進行加密,接著對加密后的數(shù) 值進行排序,然后截取密碼長度的字符串再一次進行 MD5加密,獲得散列值 H(Encrt-wd)yppy

最后與數(shù)據(jù)中得密文值的前H(Encrt-wd)位進行比較,如果相等,則認為用戶是授權(quán)。

如果人們僅僅是進行一次簡單的MD5加密就將其 值導(dǎo)入數(shù)據(jù)庫的話,那么密碼還是很不安全,還是 有可能被破解的,所以,文中提出的方法是針對這 一問題對加密的中間環(huán)節(jié)進行處理再加密,這樣 的加密方法就不是原來意義上的 MD5加密了, 要破解它其概率是非常小的。

文中提出的方法是先通過對明文進行加密, 然后再進行排序,處理后利用原密碼長度對排序 后的數(shù)值進行截取,最后再一次進行 MD5加密,獲得散列值 H(Encrt-wd),使用隨機函數(shù)yppy ??rand - ke(number)產(chǎn)生 number位數(shù)的字符序 列,和散列值疊加在一起得到最終的密文值。最后得到的密文雖然是經(jīng)過MD5加密,但是其值 已經(jīng)大不一樣。因此,通過MD5常規(guī)的一些破 解方法永遠也不可能破解其原來初始密碼值,從而保證了數(shù)據(jù)庫中密鑰數(shù)據(jù)的安全性。