tnblog
首页
视频
资源
登录
有个性,不需要签名
排名
2
文章
634
粉丝
44
评论
93
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

C# AES加密解密

10407人阅读 2019/2/28 9:27 总访问:286615 评论:0 收藏:0 手机
分类: .NET
  1.   /// <summary>
  2.         ///  AES 加密
  3.         /// </summary>
  4.         /// <param name="str">明文(待加密)</param>
  5.         /// <param name="key">密文</param>
  6.         /// <returns></returns>
  7.         public static string AesEncrypt(string str, string key)
  8.         {
  9.             if (string.IsNullOrEmpty(str)) return null;
  10.             if (key.Length != 16return null;
  11.             Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
  12.             RijndaelManaged rm = new RijndaelManaged
  13.             {
  14.                 Key = Encoding.UTF8.GetBytes(key),
  15.                 Mode = CipherMode.ECB,
  16.                 Padding = PaddingMode.PKCS7
  17.             };
  18.             ICryptoTransform cTransform = rm.CreateEncryptor();
  19.             Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
  20.             return Convert.ToBase64String(resultArray, 0, resultArray.Length);
  21.         }
  22.         /// <summary>
  23.         ///  AES 解密
  24.         /// </summary>
  25.         /// <param name="str">明文(待解密)</param>
  26.         /// <param name="key">密文</param>
  27.         /// <returns></returns>
  28.         public static string AesDecrypt(string str, string key)
  29.         {
  30.             if (string.IsNullOrEmpty(str)) return null;
  31.             // 判断Key是否为16位
  32.             if (key.Length != 16return null;
  33.             Byte[] toEncryptArray = Convert.FromBase64String(str);
  34.             RijndaelManaged rm = new RijndaelManaged
  35.             {
  36.                 Key = Encoding.UTF8.GetBytes(key),
  37.                 Mode = CipherMode.ECB,
  38.                 Padding = PaddingMode.PKCS7
  39.             };
  40.             ICryptoTransform cTransform = rm.CreateDecryptor();
  41.             Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
  42.             return Encoding.UTF8.GetString(resultArray);
  43.         }


问题:1.DES和AES加密:指定键的大小对于此算法无效 

          2.Base-64 字符数组或字符串的长度无效。

             输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符

解决:1.key的值必须为16+位

          2.注意base64字符串中的特殊字符是否被转义 或者 有没有被替换为空格



java中也有对应的加密解密方法


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价