AES加密解密

痛定思痛。 2023-08-17 16:18 222阅读 0赞
  1. 1 public class AESEncryption
  2. 2 {
  3. 3 #region 加密
  4. 4 /// <summary>
  5. 5 /// 加密
  6. 6 /// </summary>
  7. 7 /// <param name="input">需要加密的字符串</param>
  8. 8 /// <param name="iv">向量</param>
  9. 9 /// <param name="key">密钥</param>
  10. 10 /// <returns>加密后base64编码字符串</returns>
  11. 11 public static String Encrypt(String input, String iv, String key)
  12. 12 {
  13. 13 Byte[] keyBytes = Convert.FromBase64String(key);
  14. 14 Byte[] ivBytes = Convert.FromBase64String(iv);
  15. 15 using (RijndaelManaged rm = new RijndaelManaged())
  16. 16 {
  17. 17 rm.Key = keyBytes;
  18. 18 rm.IV = ivBytes;
  19. 19 ICryptoTransform encryptor = rm.CreateEncryptor(rm.Key, rm.IV);
  20. 20 using (MemoryStream msEncrypt = new MemoryStream())
  21. 21 {
  22. 22 using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
  23. 23 {
  24. 24 using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
  25. 25 {
  26. 26 swEncrypt.Write(input);
  27. 27 }
  28. 28 Byte[] encrypted = msEncrypt.ToArray();
  29. 29 return Convert.ToBase64String(encrypted);
  30. 30 }
  31. 31 }
  32. 32 }
  33. 33 }
  34. 34 #endregion
  35. 35
  36. 36 #region 解密
  37. 37 /// <summary>
  38. 38 /// 解密
  39. 39 /// </summary>
  40. 40 /// <param name="input">需要解密的字符串</param>
  41. 41 /// <param name="iv">向量</param>
  42. 42 /// <param name="key">密钥</param>
  43. 43 /// <returns>加密之后的字符串</returns>
  44. 44 public static String Decrypt(String input, String iv, String key)
  45. 45 {
  46. 46 Byte[] inputBytes = Convert.FromBase64String(input);
  47. 47 Byte[] keyBytes = Convert.FromBase64String(key);
  48. 48 Byte[] ivBytes = Convert.FromBase64String(iv);
  49. 49 using (RijndaelManaged rm = new RijndaelManaged())
  50. 50 {
  51. 51 rm.Key = keyBytes;
  52. 52 rm.IV = ivBytes;
  53. 53 ICryptoTransform decryptor = rm.CreateDecryptor(rm.Key, rm.IV);
  54. 54 using (MemoryStream msDecrypt = new MemoryStream(inputBytes))
  55. 55 {
  56. 56 using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
  57. 57 {
  58. 58 using (StreamReader srDecrypt = new StreamReader(csDecrypt))
  59. 59 {
  60. 60 return srDecrypt.ReadToEnd();
  61. 61 }
  62. 62 }
  63. 63 }
  64. 64 }
  65. 65 }
  66. 66 #endregion
  67. 67 }

转载于:https://www.cnblogs.com/hugeboke/p/11574663.html

发表评论

表情:
评论列表 (有 0 条评论,222人围观)

还没有评论,来说两句吧...

相关阅读

    相关 AES 加密解密

    java AES 加密与解密 近些年DES使用越来越少,原因就在于其使用56位密钥,比较容易被破解,近些年来逐渐被AES替代,AES已经变成目前对称加密中最流行算法之一;A