软件编程
位置:首页>> 软件编程>> C#编程>> C#字符串使用密钥进行加解密

C#字符串使用密钥进行加解密

作者:lijiao  发布时间:2023-12-27 19:10:17 

标签:C#,字符串,密钥,加密,解密

第一个为大家分享的是C#字符串使用密钥进行加解密代码,具体内容如下


public class DesEncrypt
 {
   /// <summary>
   /// 算法偏移量
   /// </summary>
   const string m_IV = "12345678";

/// <summary>
   /// 功能描述:根据输入的密钥生成8位密钥
   /// 作者: 爱给模板网 2gei.cn
   /// 创建日期:2015-07-20 17:25:26
   /// </summary>
   /// <param name="strkey">strkey</param>
   /// <returns>8位密钥</returns>
   private static string GetKey(string strkey)
   {
     if (string.IsNullOrEmpty(strkey))
     {
       strkey = "InfoColl";
     }
     if (strkey.Length % 8 == 0)
     {
       return strkey;
     }
     else
     {
       return GetKey(strkey + "0");
     }
   }

/// <summary>
   /// 功能描述:加密字符串
   /// 作者: 爱给模板网 2gei.cn
   /// 创建日期:2015-07-20 17:18:31
   /// 任务编号:
   /// </summary>
   /// <param name="strSourceString">原字符串</param>
   /// <param name="strKey">密钥</param>
   /// <returns>加密后的字符串</returns>
   public static string Encrypt(string strSourceString, string strKey)
   {
     strKey = GetKey(strKey);
     byte[] btKey = Encoding.UTF8.GetBytes(strKey);

byte[] btIV = Encoding.UTF8.GetBytes(m_IV);

DESCryptoServiceProvider des = new DESCryptoServiceProvider();

using (MemoryStream ms = new MemoryStream())
     {
       try
       {
         byte[] inData = Encoding.UTF8.GetBytes(strSourceString);
         using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIV), CryptoStreamMode.Write))
         {
           cs.Write(inData, 0, inData.Length);

cs.FlushFinalBlock();
         }

return Convert.ToBase64String(ms.ToArray());
       }
       catch
       {
         return strSourceString;
       }
     }
   }

/// <summary>
   /// 功能描述:解密字符串
   /// 作者: 爱给模板网 2gei.cn
   /// 创建日期:2015-07-20 17:18:49
   /// 任务编号:
   /// </summary>
   /// <param name="strEncryptedString">原字符串</param>
   /// <param name="strKey">密钥</param>
   /// <returns>解密后的字符串</returns>
   public static string Decrypt(string strEncryptedString, string strKey)
   {
     strKey = GetKey(strKey);
     byte[] btKey = Encoding.UTF8.GetBytes(strKey);

byte[] btIV = Encoding.UTF8.GetBytes(m_IV);

DESCryptoServiceProvider des = new DESCryptoServiceProvider();

using (MemoryStream ms = new MemoryStream())
     {
       try
       {
         byte[] inData = Convert.FromBase64String(strEncryptedString);
         using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(btKey, btIV), CryptoStreamMode.Write))
         {
           cs.Write(inData, 0, inData.Length);

cs.FlushFinalBlock();
         }

return Encoding.UTF8.GetString(ms.ToArray());
       }
       catch
       {
         return strEncryptedString;
       }
     }
   }
 }

C#字符串加密和解密


using System.Security.Cryptography;
using System.IO;
//默认密钥向量
   private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };

/// <summary>
   /// DES加密字符串
   /// </summary>
   /// <param name="encryptString">待加密的字符串</param>
   /// <param name="encryptKey">加密密钥,要求为8位</param>
   /// <returns>加密成功返回加密后的字符串,失败返回源串 </returns>
   public static string EncryptDES(string encryptString, string encryptKey)
   {
     try
     {
       byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));//转换为字节
       byte[] rgbIV = Keys;
       byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
       DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();//实例化数据加密标准
       MemoryStream mStream = new MemoryStream();//实例化内存流
       //将数据流链接到加密转换的流
       CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
       cStream.Write(inputByteArray, 0, inputByteArray.Length);
       cStream.FlushFinalBlock();
       return Convert.ToBase64String(mStream.ToArray());
     }
     catch
     {
       return encryptString;
     }
   }

/// <summary>
   /// DES解密字符串
   /// </summary>
   /// <param name="decryptString">待解密的字符串</param>
   /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
   /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
   public static string DecryptDES(string decryptString, string decryptKey)
   {
     try
     {
       byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
       byte[] rgbIV = Keys;
       byte[] inputByteArray = Convert.FromBase64String(decryptString);
       DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
       MemoryStream mStream = new MemoryStream();
       CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
       cStream.Write(inputByteArray, 0, inputByteArray.Length);
       cStream.FlushFinalBlock();
       return Encoding.UTF8.GetString(mStream.ToArray());
     }
     catch
     {
       return decryptString;
     }
   }

string EncryptStr = EncryptDESString.EncryptDES("aaaaaaaaaa", "ssssssss"); //返回加密后的字符串
     string DecryptStr = EncryptDESString.DecryptDES(EncryptStr, "ssssssss");//解密字符串

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com