轉自http://blog.csdn.Net/hnas_better/archive/2007/11/22/1897864.ASPx
項目開發過程中,經常會遇到需要加密的需求,在這裡簡單為大家介紹一下MD5加密原理及DES算法,並用C# 實現。由於沒有仔細研究過,函數寫的比較粗糙,有興趣的可以改進一下哦!
MD5的全稱是Message-Digest Algorithm 5,在90年代初由MIT的計算機科學實驗室和RSA Data Security Inc發明,經MD2、MD3和MD4發展而來。Message-Digest泛指字節串(Message)的Hash變換,就是把一個任意長度的字節串變換成一定長的大整數。請注意我使用了“字節串”而不是“字符串”這個詞,是因為這種變換只與字節的值有關,與字符集或編碼方式無關。MD5將任意長度的“字節串”變換成一個128bit的大整數,並且它是一個不可逆的字符串變換算法,換句話說就是,即使你看到源程序和算法描述,也無法將一個MD5的值變換回原始的字符串,從數學原理上說,是因為原始的字符串有無窮多個,這有點象不存在反函數的數學函數。
MD5還廣泛用於加密和解密技術上,在很多網站系統中,用戶的密碼是以MD5值(或類似的其它算法)的方式保存的,用戶Login的時候,系統是把用戶輸入的密碼計算成MD5值,然後再去和系統中保存的MD5值進行比較。這樣即使黑客得到數據庫也不知道登錄密碼,確保了網站的安全。
以下文字內容引自http://zhidao.baidu.com/question/5017928.Html
最著名的保密密鑰或對稱密鑰加密算法DES(Data Encryption Standard)是由IBM公司在70年代發展起來的,並經過政府的加密標准篩選後,於1976年11月被美國政府采用,DES隨後被美國國家標准局和美國國家標准協會(American National Standard Institute, ANSI) 承認。
DES使用56位密鑰對64位的數據塊進行加密,並對64位的數據塊進行16輪編碼。與每輪編碼時,一個48位的“每輪”密鑰值由56位的完整密鑰得出來。DES用軟件進行解碼需要用很長時間,而用硬件解碼速度非常快,但幸運的是當時大多數黑客並沒有足夠的設備制造出這種硬件設備。在1977年,人們估計要耗資兩千萬美元才能建成一個專門計算機用於DES的解密,而且需要12個小時的破解才能得到結果。所以,當時DES被認為是一種十分強壯的加密方法。
但是,當今的計算機速度越來越快了,制造一台這樣特殊的機器的花費已經降到了十萬美元左右,所以用它來保護十億美元的銀行間線纜時,就會仔細考慮了。另一個方面,如果只用它來保護一台服務器,那麼DES確實是一種好的辦法,因為黑客絕不會僅僅為入侵一個服務器而花那麼多的錢破解DES密文。由於現在已經能用二十萬美圓制造一台破譯DES的特殊的計算機,所以現在再對要求“強壯”加密的場合已經不再適用了。
三重DES
因為確定一種新的加密法是否真的安全是極為困難的,而且DES的唯一密碼學缺點,就是密鑰長度相對比較短,所以人們並沒有放棄使用DES,而是想出了一個解決其長度問題的方法,即采用三重DES。這種方法用兩個密鑰對明文進行三次加密,假設兩個密鑰是K1和K2,其算法的步驟如圖5.9所示:
1. 用密鑰K1進行DEA加密。
2. 用K2對步驟1的結果進行DES解密。
3. 用步驟2的結果使用密鑰K1進行DES加密。
這種方法的缺點,是要花費原來三倍時間,從另一方面來看,三重DES的112位密鑰長度是很“強壯”的加密方式了
以下為DES的兩個簡單的加密、解密函數