好得很程序员自学网

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

C#实现的AES加密解密完整实例

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

?

/******************************************************************

  * 创建人:HTL

  * 说明:C# AES加密解密

  *******************************************************************/

using System;

using System.Security.Cryptography;

using System.Text;

using System.IO;

public class Test

{

  public static void Main()

  {

  //密码

  string password= "1234567890123456" ;

  //加密初始化向量

  string iv= "  " ;

  string message=AESEncrypt( "abcdefghigklmnopqrstuvwxyz0123456789" ,password,iv);

  Console.WriteLine(message);

  message=AESDecrypt( "8Z3dZzqn05FmiuBLowExK0CAbs4TY2GorC2dDPVlsn/tP+VuJGePqIMv1uSaVErr" ,password,iv);

  Console.WriteLine(message);

  }

  /// <summary>

  /// AES加密

  /// </summary>

  /// <param name="text">加密字符</param>

  /// <param name="password">加密的密码</param>

  /// <param name="iv">密钥</param>

  /// <returns></returns>

  public static string AESEncrypt(string text, string password, string iv)

  {

  RijndaelManaged rijndaelCipher = new RijndaelManaged();

  rijndaelCipher.Mode = CipherMode.CBC;

  rijndaelCipher.Padding = PaddingMode.PKCS7;

  rijndaelCipher.KeySize = 128;

  rijndaelCipher.BlockSize = 128;

  byte[] pwdBytes = System.Text.Encoding.UTF8.GetBytes(password);

  byte[] keyBytes = new byte[16];

  int len = pwdBytes.Length;

  if (len > keyBytes.Length) len = keyBytes.Length;

  System.Array. Copy (pwdBytes, keyBytes, len);

  rijndaelCipher.Key = keyBytes;

  byte[] ivBytes = System.Text.Encoding.UTF8.GetBytes(iv);

  rijndaelCipher.IV = new byte[16];

  ICryptoTransform transform = rijndaelCipher.CreateEncryptor();

  byte[] plainText = Encoding.UTF8.GetBytes(text);

  byte[] cipherBytes = transform.TransformFinalBlock(plainText, 0, plainText.Length);

  return Convert.ToBase64String(cipherBytes);

  }

  /// <summary>

  /// AES解密

  /// </summary>

  /// <param name="text"></param>

  /// <param name="password"></param>

  /// <param name="iv"></param>

  /// <returns></returns>

  public static string AESDecrypt(string text, string password, string iv)

  {

  RijndaelManaged rijndaelCipher = new RijndaelManaged();

  rijndaelCipher.Mode = CipherMode.CBC;

  rijndaelCipher.Padding = PaddingMode.PKCS7;

  rijndaelCipher.KeySize = 128;

  rijndaelCipher.BlockSize = 128;

  byte[] encryptedData = Convert.FromBase64String(text);

  byte[] pwdBytes = System.Text.Encoding.UTF8.GetBytes(password);

  byte[] keyBytes = new byte[16];

  int len = pwdBytes.Length;

  if (len > keyBytes.Length) len = keyBytes.Length;

  System.Array. Copy (pwdBytes, keyBytes, len);

  rijndaelCipher.Key = keyBytes;

  byte[] ivBytes = System.Text.Encoding.UTF8.GetBytes(iv);

  rijndaelCipher.IV = ivBytes;

  ICryptoTransform transform = rijndaelCipher.CreateDecryptor();

  byte[] plainText = transform.TransformFinalBlock(encryptedData, 0, encryptedData.Length);

  return Encoding.UTF8.GetString(plainText);

  }

}

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

dy("nrwz");

查看更多关于C#实现的AES加密解密完整实例的详细内容...

  阅读:41次