码迷,mamicode.com
首页 > Windows程序 > 详细

C# AES加密解密

时间:2015-04-17 20:17:59      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:

完整代码:
  1. /******************************************************************
  2. * 创建人:HTL
  3. * 创建时间:2015-04-17 17:36:35
  4. * 说明:C# AES加密解密
  5. * Email:huangyuan413026@163.com
  6. *******************************************************************//*
  7. using System;
  8. using System.Security.Cryptography;
  9. using System.Text;
  10. using System.IO;
  11. public class Test
  12. {
  13. public static void Main()
  14. {
  15. //密码
  16. string password="1234567890123456";
  17. //加密初始化向量
  18. string iv=" ";
  19. string message=AESEncrypt("abcdefghigklmnopqrstuvwxyz0123456789",password,iv);
  20. Console.WriteLine(message);
  21. message=AESDecrypt("8Z3dZzqn05FmiuBLowExK0CAbs4TY2GorC2dDPVlsn/tP+VuJGePqIMv1uSaVErr",password,iv);
  22. Console.WriteLine(message);
  23. }
  24. /// <summary>
  25. /// AES加密
  26. /// </summary>
  27. /// <param name="text">加密字符</param>
  28. /// <param name="password">加密的密码</param>
  29. /// <param name="iv">密钥</param>
  30. /// <returns></returns>
  31. public static string AESEncrypt(string text, string password, string iv)
  32. {
  33. RijndaelManaged rijndaelCipher = new RijndaelManaged();
  34. rijndaelCipher.Mode = CipherMode.CBC;
  35. rijndaelCipher.Padding = PaddingMode.PKCS7;
  36. rijndaelCipher.KeySize = 128;
  37. rijndaelCipher.BlockSize = 128;
  38. byte[] pwdBytes = System.Text.Encoding.UTF8.GetBytes(password);
  39. byte[] keyBytes = new byte[16];
  40. int len = pwdBytes.Length;
  41. if (len > keyBytes.Length) len = keyBytes.Length;
  42. System.Array.Copy(pwdBytes, keyBytes, len);
  43. rijndaelCipher.Key = keyBytes;
  44. byte[] ivBytes = System.Text.Encoding.UTF8.GetBytes(iv);
  45. rijndaelCipher.IV = new byte[16];
  46. ICryptoTransform transform = rijndaelCipher.CreateEncryptor();
  47. byte[] plainText = Encoding.UTF8.GetBytes(text);
  48. byte[] cipherBytes = transform.TransformFinalBlock(plainText, 0, plainText.Length);
  49. return Convert.ToBase64String(cipherBytes);
  50. }
  51. /// <summary>
  52. /// AES解密
  53. /// </summary>
  54. /// <param name="text"></param>
  55. /// <param name="password"></param>
  56. /// <param name="iv"></param>
  57. /// <returns></returns>
  58. public static string AESDecrypt(string text, string password, string iv)
  59. {
  60. RijndaelManaged rijndaelCipher = new RijndaelManaged();
  61. rijndaelCipher.Mode = CipherMode.CBC;
  62. rijndaelCipher.Padding = PaddingMode.PKCS7;
  63. rijndaelCipher.KeySize = 128;
  64. rijndaelCipher.BlockSize = 128;
  65. byte[] encryptedData = Convert.FromBase64String(text);
  66. byte[] pwdBytes = System.Text.Encoding.UTF8.GetBytes(password);
  67. byte[] keyBytes = new byte[16];
  68. int len = pwdBytes.Length;
  69. if (len > keyBytes.Length) len = keyBytes.Length;
  70. System.Array.Copy(pwdBytes, keyBytes, len);
  71. rijndaelCipher.Key = keyBytes;
  72. byte[] ivBytes = System.Text.Encoding.UTF8.GetBytes(iv);
  73. rijndaelCipher.IV = ivBytes;
  74. ICryptoTransform transform = rijndaelCipher.CreateDecryptor();
  75. byte[] plainText = transform.TransformFinalBlock(encryptedData, 0, encryptedData.Length);
  76. return Encoding.UTF8.GetString(plainText);
  77. }
  78. }
参考:
          在线DEMO




C# AES加密解密

标签:

原文地址:http://www.cnblogs.com/huangtailang/p/6fe2649ec4a7774a3011be2dff1c8ac2.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!