zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#的3DES加密解密算法实例代码

2023-06-13 09:15:12 时间

C#类如下:

复制代码代码如下:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Security.Cryptography;
usingSystem.IO;

namespaceConsoleApplication1
{
   ///<summary>
   ///加解密类
   ///</summary>
   publicclassEncryptHelper
   {
       

       //构造一个对称算法
       privateSymmetricAlgorithmmCSP=newTripleDESCryptoServiceProvider();

       #region加密解密函数

       ///<summary>
       ///字符串的加密
       ///</summary>
       ///<paramname="Value">要加密的字符串</param>
       ///<paramname="sKey">密钥,必须32位</param>
       ///<paramname="sIV">向量,必须是12个字符</param>
       ///<returns>加密后的字符串</returns>
       publicstringEncryptString(stringValue,stringsKey,stringsIV)
       {
           try
           {
               ICryptoTransformct;
               MemoryStreamms;
               CryptoStreamcs;
               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=newMemoryStream();
               cs=newCryptoStream(ms,ct,CryptoStreamMode.Write);
               cs.Write(byt,0,byt.Length);
               cs.FlushFinalBlock();
               cs.Close();

               returnConvert.ToBase64String(ms.ToArray());
           }
           catch(Exceptionex)
           {
               //MessageBox.Show(ex.Message,"出现异常",MessageBoxButtons.OK,MessageBoxIcon.Warning);
               return("ErrorinEncrypting"+ex.Message);
           }
       }

       ///<summary>
       ///解密字符串
       ///</summary>
       ///<paramname="Value">加密后的字符串</param>
       ///<paramname="sKey">密钥,必须32位</param>
       ///<paramname="sIV">向量,必须是12个字符</param>
       ///<returns>解密后的字符串</returns>
       publicstringDecryptString(stringValue,stringsKey,stringsIV)
       {
           try
           {
               ICryptoTransformct;//加密转换运算
               MemoryStreamms;//内存流
               CryptoStreamcs;//数据流连接到数据加密转换的流
               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=newMemoryStream();
               cs=newCryptoStream(ms,ct,CryptoStreamMode.Write);
               cs.Write(byt,0,byt.Length);
               cs.FlushFinalBlock();
               cs.Close();

               returnEncoding.UTF8.GetString(ms.ToArray());
           }
           catch(Exceptionex)
           {
               //MessageBox.Show(ex.Message,"出现异常",MessageBoxButtons.OK,MessageBoxIcon.Warning);
               return("ErrorinDecrypting"+ex.Message);
           }
       }

       #endregion
   }
}


调用方法如下:
复制代码代码如下:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;

namespaceConsoleApplication1
{
   classProgram
   {
       staticvoidMain(string[]args)
       {
           EncryptHelperhelper=newEncryptHelper();

           //加密
           stringoldValue="13800138000";
           //加密后结果
           //密钥,必须32位
           stringsKey="qJzGEh6hESZDVJeCnFPGuxzaiB7NLQM5";
           //向量,必须是12个字符
           stringsIV="andyliu1234=";
           //print
           stringnewValue= helper.EncryptString(oldValue,sKey,sIV);
           Console.WriteLine("加密后:"+newValue);
           //解密
           stringdesValue=helper.DecryptString(newValue,sKey,sIV);
           //
           Console.WriteLine("解密后:"+desValue);
           Console.ReadLine();

       }
   }
}