運用的一個簡單樣本對3DES加密
來源:互聯網
上載者:User
加密|樣本 提要 命名空間:System.Security.Cryptography.TripleDES 類簡單說明: 表示三重資料加密標準演算法的基類,TripleDES 的所有實現都必須從此基類派生,但TripleDES是從 SymmetricAlgorithm 類裡繼承出來。TripleDES 使用 DES 演算法的三次連續迭代。它可以使用兩個或三個 56 位密鑰。 使用目的:比較安全的加密一種方式,密鑰和向量的不同,會生產不同的加密字串。因為是DES演算法的三次連續迭代,而且演算法可逆,這樣對於資料保密性和可恢複性都不錯。 使用方法:直接進行字串輸入和輸出。二、程式碼範例本代碼參照了部分MSDN上的程式碼範例,再根據自己的實際情況,補充了一部分MSDN上沒有提到的內容 using System;using System.Security;using System.Security.Cryptography;using System.IO;using System.Text;using System.Threading; namespace TRIP3DES{ /// /// Class1 的摘要說明。 /// public class dllEncrypt { //密鑰 private const string sKey = "qJzGEh6hESZDVJeCnFPGuxzaiB7NLQM3"; //向量,向量可以為空白 private const string sIV = "qcDY6X+aPLw="; //構造一個對稱演算法 private SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider(); public dllEncrypt(){} #region public string EncryptString(string Value) /// /// 加密字串 /// /// 輸入的字串 /// 加密後的字串 public string EncryptString(string Value) { ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt; mCSP.Key = Convert.FromBase64String(sKey); mCSP.IV = Convert.FromBase64String(sIV); //指定加密的運算模式 mCSP.Mode = System.Security.Cryptography.CipherMode.ECB; //擷取或設定密碼編譯演算法的填充模式 mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7; 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()); } #endregion #region public string DecryptString(string Value) /// /// 解密字串 /// /// 加過密的字串 /// 解密後的字串 public string DecryptString(string Value) { ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt; mCSP.Key = Convert.FromBase64String(sKey); mCSP.IV = Convert.FromBase64String(sIV); mCSP.Mode = System.Security.Cryptography.CipherMode.ECB; mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7; 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()); } #endregion }} 三、總結做成類庫對於密鑰和向量的保管比較方便,輸入輸出全部是string型變數,這樣也比較方便,密鑰的產生可以用mSCP. GenerateKey()來產生,向量的產生也可以用mCSP.GenerateIV()來產生。大家也可以自己靈活的編寫符合自己的3DES演算法。