C#3DES加密解密算法

xiaoxiao2021-02-27  327

using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptography; using System.IO; namespace ConsoleApplication1 { /// <summary> /// 加解密类 /// </summary> public class EncryptHelper { //构造一个对称算法 private SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider(); #region 加密解密函数 /// <summary> /// 字符串的加密 /// </summary> /// <param name="Value">要加密的字符串</param> /// <param name="sKey">密钥,必须32位</param> /// <param name="sIV">向量,必须是12个字符</param> /// <returns>加密后的字符串</returns> public string EncryptString(string Value, string sKey,string sIV) { try { 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()); } catch (Exception ex) { //MessageBox.Show(ex.Message, "出现异常", MessageBoxButtons.OK, MessageBoxIcon.Warning); return ("Error in Encrypting " + ex.Message); } } /// <summary> /// 解密字符串 /// </summary> /// <param name="Value">加密后的字符串</param> /// <param name="sKey">密钥,必须32位</param> /// <param name="sIV">向量,必须是12个字符</param> /// <returns>解密后的字符串</returns> public string DecryptString(string Value, string sKey, string sIV) { try { ICryptoTransform ct;//加密转换运算 MemoryStream ms;//内存流 CryptoStream cs;//数据流连接到数据加密转换的流 byte[] byt; //将3DES的密钥转换成byte mCSP.Key = Convert.FromBase64String(sKey); //将3DES的向量转换成byte 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()); } catch (Exception ex) { //MessageBox.Show(ex.Message, "出现异常", MessageBoxButtons.OK, MessageBoxIcon.Warning); return ("Error in Decrypting " + ex.Message); } } #endregion } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { EncryptHelper helper = new EncryptHelper(); //加密 string oldValue = "13800138000"; //加密后结果 //密钥,必须32位 string sKey = "qJzGEh6hESZDVJeCnFPGuxzaiB7NLQM5"; //向量,必须是12个字符 string sIV = "andyliu1234="; //print string newValue = helper.EncryptString(oldValue,sKey,sIV); Console.WriteLine("加密后:"+ newValue); //解密 string desValue = helper.DecryptString(newValue,sKey,sIV); // Console.WriteLine("解密后:"+ desValue); Console.ReadLine(); } } }

更多资讯请关注我的公众号,定时分享各自技术:

转载请注明原文地址: https://www.6miu.com/read-2299.html

最新回复(0)