Des与3Des加密解密
生活随笔
收集整理的這篇文章主要介紹了
Des与3Des加密解密
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/// <summary>/// Des和3Des算法/// </summary>public class Des{/// <summary>/// Des加密/// </summary>/// <param name="pToEncrypt">明文</param>/// <param name="sKey">密鑰</param>/// <returns></returns>public static string DESEnCode(string pToEncrypt, string sKey){pToEncrypt = HttpContext.Current.Server.UrlEncode(pToEncrypt);DESCryptoServiceProvider des = new DESCryptoServiceProvider();byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(pToEncrypt);des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);cs.Write(inputByteArray, 0, inputByteArray.Length);cs.FlushFinalBlock();StringBuilder ret = new StringBuilder();foreach (byte b in ms.ToArray()){ret.AppendFormat("{0:X2}", b);}ret.ToString();return ret.ToString();}/// <summary>/// 3Des加密(密鑰不能每8位重復,例如:123456781234567812345678,如果這樣則算法退化為Des,C#會檢測,不能使用)/// </summary>/// <param name="a_strString">明文</param>/// <param name="a_strKey">密鑰</param>/// <returns></returns>public string Decrypt3DES(string a_strString, string a_strKey){TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();DES.Key = ASCIIEncoding.ASCII.GetBytes(a_strKey);DES.Mode = CipherMode.ECB;DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;ICryptoTransform DESDecrypt = DES.CreateEncryptor();string result = "";try{byte[] Buffer = Convert.FromBase64String(a_strString);result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));}catch (Exception e){}return result;}/// <summary>/// Des解密/// </summary>/// <param name="encryptedString">密文</param>/// <param name="key">密鑰</param>/// <returns></returns>public string Decrypt(string encryptedString, string key){byte[] btKey = Encoding.UTF8.GetBytes(key);DESCryptoServiceProvider des = new DESCryptoServiceProvider();des.Key = ASCIIEncoding.ASCII.GetBytes(key);des.Mode = CipherMode.ECB;des.Padding = System.Security.Cryptography.PaddingMode.PKCS7;using (MemoryStream ms = new MemoryStream()){byte[] inData = Convert.FromBase64String(encryptedString);try{using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write)){cs.Write(inData, 0, inData.Length);cs.FlushFinalBlock();}return Encoding.UTF8.GetString(ms.ToArray());}catch{return encryptedString;}}}/// <summary>/// 3Des解密(密鑰不能每8位重復,例如:123456781234567812345678,如果這樣則算法退化為Des,C#會檢測,不能使用)/// </summary>/// <param name="a_strString">密文</param>/// <param name="a_strKey">密鑰</param>/// <returns></returns>public string Decrypt3DES(string a_strString, string a_strKey){TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();DES.Key = ASCIIEncoding.ASCII.GetBytes(a_strKey);DES.Mode = CipherMode.ECB;DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;ICryptoTransform DESDecrypt = DES.CreateDecryptor();string result = "";try{byte[] Buffer = Convert.FromBase64String(a_strString);result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));}catch (Exception e){}return result;}}
?
轉載于:https://www.cnblogs.com/CielWater/p/4253099.html
總結
以上是生活随笔為你收集整理的Des与3Des加密解密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Appium基础 — APPium安装(
- 下一篇: Unity自定义UI组件(九) 颜色拾取