3DES是
DES
加密算法的一種模式,它使用3條64位的密鑰對數據進行三次加密。數據加密標準(DES)是美國的一種由來已久的加密標準,它使用對稱密鑰加密法,並於1981年被
ANSI組織規範爲ANSI X.3.92。DES使用56位密鑰和密碼塊的方法,而在密碼塊的方法中,文本被分紅64位大小的文本塊而後再進行加密。比起最初的DES,3DES更爲安全。
3DES(即Triple DES)是DES向AES過渡的加密算法(1999年,NIST將3-DES指定爲過渡的加密標準),是DES的一個更安全的變形。它以DES爲基本模塊,經過組合分組方法設計出分組加密算法,其具體實現以下:設Ek()和Dk()表明DES算法的加密和解密過程,K表明DES算法使用的密鑰,P表明明文,C表明密表,這樣, 3DES加密過程爲:C=Ek3(Dk2(Ek1(P))) 3DES解密過程爲:P=Dk1((EK2(Dk3(C))) 具體的加/解密過程如圖所示。 using System; using System.Text; using System.IO; using System.Security.Cryptography; class Class1 { static void Main() { Console.WriteLine("Encrypt String..."); txtKey = "tkGGRmBErvc="; btnKeyGen(); Console.WriteLine("Encrypt Key :",txtKey); txtIV = "Kl7ZgtM1dvQ="; btnIVGen(); Console.WriteLine("Encrypt IV :",txtIV); Console.WriteLine(); string txtEncrypted = EncryptString("1111"); Console.WriteLine("Encrypt String : ",txtEncrypted); string txtOriginal = DecryptString(txtEncrypted); Console.WriteLine("Decrypt String : ",txtOriginal); } private static SymmetricAlgorithm mCSP; private static string txtKey; private static string txtIV; private static void btnKeyGen() { mCSP = SetEnc(); byte[] byt2 = Convert.FromBase64String(txtKey); mCSP.Key = byt2; } private static void btnIVGen() { byte[] byt2 = Convert.FromBase64String(txtIV); mCSP.IV = byt2; } private static string EncryptString(string Value) { ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt; ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV); byt = Encoding.UTF8.GetBytes(Value); ms = new MemoryStream(); cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Convert.ToBase64String(ms.ToArray()); } private static string DecryptString(string Value) { ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt; ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV); byt = Convert.FromBase64String(Value); ms = new MemoryStream(); cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Encoding.UTF8.GetString(ms.ToArray()); } private static SymmetricAlgorithm SetEnc() { return new DESCryptoServiceProvider(); } } K一、K二、K3決定了算法的安全性,若三個密鑰互不相同,本質上就至關於用一個長爲168位的密鑰進行加密。多年來,它在對付強力***時是比較安全的。若數據對安全性要求不那麼高,K1能夠等於K3。在這種狀況下,密鑰的有效長度爲112位。 |
AES——對稱密碼新標準
對稱密碼體制的發展趨勢將以分組密碼爲重點。分組密碼算法一般由 密鑰擴展算法和加密(解密)算法兩部分組成。密鑰擴展算法將b字節用戶主密鑰擴展成r個子密鑰。加密算法由一個密碼學上的弱函數f與r個子密鑰迭代r次組成。混亂和密鑰擴散是分組密碼算法設計的基本原則。抵禦已知明文的差分和線性***,可變長密鑰和分組是該體制的設計要點。 AES是美國國家標準技術研究所NIST旨在取代 DES的21世紀的加密標準。 AES的基本要求是,採用對稱分組密碼體制,密鑰長度的最少支持爲12八、19二、256,分組長度128位,算法應易於各類硬件和軟件實現。1998年NIST開始AES第一輪分析、測試和徵集,共產生了15個候選算法。1999年3月完成了第二輪AES2的分析、測試。預計在2000年8月AES的最終結果將公佈。 在應用方面,儘管DES在安全上是脆弱的,但因爲快速DES芯片的大量生產,使得DES仍能暫時繼續使用,爲提升安全強度,一般使用獨立密鑰的三級DES。可是DES早晚要被AES代替。流密碼體制較之分組密碼在理論上成熟且安全,但未被列入下一代加密標準。 |
對稱加密算法 對稱加密算法是應用較早的加密算法,技術成熟。在對稱加密算法中,數據發信方將明文(原始數據)和加密密鑰一塊兒通過特殊加密算法處理後,使其變成複雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則須要使用加密用過的密鑰及相同算法的逆算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密,這就要求解密方事先必須知道加密密鑰。對稱加密算法的特色是算法公開、計算量小、加密速度快、加密效率高。不足之處是,交易雙方都使用一樣鑰匙,安全性得不到保證。此外,每對用戶每次使用對稱加密算法時,都須要使用其餘人不知道的唯一鑰匙,這會使得發收信雙方所擁有的鑰匙數量成幾何級數增加,密鑰管理成爲用戶的負擔。對稱加密算法在分佈式網絡系統上使用較爲困難,主要是由於密鑰管理困難,使用成本較高。在計算機專網系統中普遍使用的對稱加密算法有DES和IDEA等。美國國家標準局倡導的AES即將做爲新標準取代DES。
|