好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

本文实例讲述了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#程序设计有所帮助。

dy("nrwz");

查看更多关于C#使用DES和AES实现加密解密功能示例的详细内容...

  阅读:41次