首页 > 编程 > C# > 正文

C#使用DES和AES实现加密解密功能示例

2019-10-29 21:09:14
字体:
来源:转载
供稿:网友

本文实例讲述了C#使用DES和AES实现加密解密功能。分享给大家供大家参考,具体如下:

using System;using System.Text;using System.Security.Cryptography;using System.IO;namespace MyCryptography{  /// <summary>  /// DES加密解密  /// </summary>  public class DES  {    /// <summary>    /// 获取密钥    /// </summary>    private static string Key    {      get { return @"P@+#wG+Z"; }    }    /// <summary>    /// 获取向量    /// </summary>    private static string IV    {      get { return @"L%n67}G/Mk@k%:~Y"; }    }    /// <summary>    /// DES加密    /// </summary>    /// <param name="plainStr">明文字符串</param>    /// <returns>密文</returns>    public static string DESEncrypt(string plainStr)    {      byte[] bKey = Encoding.UTF8.GetBytes(Key);      byte[] bIV = Encoding.UTF8.GetBytes(IV);      byte[] byteArray = Encoding.UTF8.GetBytes(plainStr);      string encrypt = null;      DESCryptoServiceProvider des = new DESCryptoServiceProvider();      try      {        using (MemoryStream mStream = new MemoryStream())        {          using (CryptoStream cStream = new CryptoStream(mStream, des.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))          {            cStream.Write(byteArray, 0, byteArray.Length);            cStream.FlushFinalBlock();            encrypt = Convert.ToBase64String(mStream.ToArray());          }        }      }      catch { }      des.Clear();      return encrypt;    }    /// <summary>    /// DES解密    /// </summary>    /// <param name="encryptStr">密文字符串</param>    /// <returns>明文</returns>    public static string DESDecrypt(string encryptStr)    {      byte[] bKey = Encoding.UTF8.GetBytes(Key);      byte[] bIV = Encoding.UTF8.GetBytes(IV);      byte[] byteArray = Convert.FromBase64String(encryptStr);      string decrypt = null;      DESCryptoServiceProvider des = new DESCryptoServiceProvider();      try      {        using (MemoryStream mStream = new MemoryStream())        {          using (CryptoStream cStream = new CryptoStream(mStream, des.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write))          {            cStream.Write(byteArray, 0, byteArray.Length);            cStream.FlushFinalBlock();            decrypt = Encoding.UTF8.GetString(mStream.ToArray());          }        }      }      catch { }      des.Clear();      return decrypt;    }  }  /// <summary>  /// AES加密解密  /// </summary>  public class AES  {    /// <summary>    /// 获取密钥    /// </summary>    private static string Key    {      get { return @")O[NB]6,YF}+efcaj{+oESb9d8>Z'e9M"; }    }    /// <summary>    /// 获取向量    /// </summary>    private static string IV    {      get { return @"L+/~f4,Ir)b$=pkf"; }    }    /// <summary>    /// AES加密    /// </summary>    /// <param name="plainStr">明文字符串</param>    /// <returns>密文</returns>    public static string AESEncrypt(string plainStr)    {      byte[] bKey = Encoding.UTF8.GetBytes(Key);      byte[] bIV = Encoding.UTF8.GetBytes(IV);      byte[] byteArray = Encoding.UTF8.GetBytes(plainStr);      string encrypt = null;      Rijndael aes = Rijndael.Create();      try      {        using (MemoryStream mStream = new MemoryStream())        {          using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))          {            cStream.Write(byteArray, 0, byteArray.Length);            cStream.FlushFinalBlock();            encrypt = Convert.ToBase64String(mStream.ToArray());          }        }      }      catch { }      aes.Clear();      return encrypt;    }    /// <summary>    /// AES加密    /// </summary>    /// <param name="plainStr">明文字符串</param>    /// <param name="returnNull">加密失败时是否返回 null,false 返回 String.Empty</param>    /// <returns>密文</returns>    public static string AESEncrypt(string plainStr, bool returnNull)    {      string encrypt = AESEncrypt(plainStr);      return returnNull ? encrypt : (encrypt == null ? String.Empty : encrypt);    }    /// <summary>    /// AES解密    /// </summary>    /// <param name="encryptStr">密文字符串</param>    /// <returns>明文</returns>    public static string AESDecrypt(string encryptStr)    {      byte[] bKey = Encoding.UTF8.GetBytes(Key);      byte[] bIV = Encoding.UTF8.GetBytes(IV);      byte[] byteArray = Convert.FromBase64String(encryptStr);      string decrypt = null;      Rijndael aes = Rijndael.Create();      try      {        using (MemoryStream mStream = new MemoryStream())        {          using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write))          {            cStream.Write(byteArray, 0, byteArray.Length);            cStream.FlushFinalBlock();            decrypt = Encoding.UTF8.GetString(mStream.ToArray());          }        }      }      catch { }      aes.Clear();      return decrypt;    }    /// <summary>    /// AES解密    /// </summary>    /// <param name="encryptStr">密文字符串</param>    /// <param name="returnNull">解密失败时是否返回 null,false 返回 String.Empty</param>    /// <returns>明文</returns>    public static string AESDecrypt(string encryptStr, bool returnNull)    {      string decrypt = AESDecrypt(encryptStr);      return returnNull ? decrypt : (decrypt == null ? String.Empty : decrypt);    }  }}

希望本文所述对大家C#程序设计有所帮助。


注:相关教程知识阅读请移步到c#教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表