zoukankan      html  css  js  c++  java
  • [C#] AES 加密

            public static string AesEncrypt(string str, string key)
            {
                if (string.IsNullOrEmpty(str)) return null;
                Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
    
                RijndaelManaged rm = new RijndaelManaged();
                rm.Key = Encoding.UTF8.GetBytes(key);
                rm.Mode = CipherMode.ECB;                   // 运算方式
                rm.Padding = PaddingMode.PKCS7;             // 填充方式
                rm.BlockSize = 128;                         // 加密结果大小(128 - 默认、192、256)
    
                try
                {
                    ICryptoTransform cTransform = rm.CreateEncryptor();
                    Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
                    return Convert.ToBase64String(resultArray, 0, resultArray.Length);
                }
                catch(Exception e)
                {
                    Console.WriteLine("AesEncrypt exp : " + e.Message);
                    return "";
                }
                
            }
    
            public static string AesDecrypt(string str, string key)
            {
                if (string.IsNullOrEmpty(str)) return null;
                Byte[] toEncryptArray = Convert.FromBase64String(str);
    
                RijndaelManaged rm = new RijndaelManaged();
                rm.Key = Encoding.UTF8.GetBytes(key);
                rm.Mode = CipherMode.ECB;                   // 运算方式
                rm.Padding = PaddingMode.PKCS7;             // 填充方式
                rm.BlockSize = 128;                         // 加密结果大小(128 - 默认、192、256)
    
                try
                {
                    ICryptoTransform cTransform = rm.CreateDecryptor();
                    Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
                    return Encoding.UTF8.GetString(resultArray);
                }
                catch(Exception e)
                {
                    Console.WriteLine("AesDecrypt exp : " + e.Message);
                    return "";
                }
                
            }

    其中,key 的大小只能是 128位、192位、256位,对应的字符长度为 16、24、32

    如果要返回 hex 形式,加密需要用以下方式取代 , 解密时不需要做 base64 解码:

    return BitConverter.ToString(resultArray, 0).Replace("-", string.Empty).ToLower();

  • 相关阅读:
    创业公司的经济适用架构师
    软件工程–从嗤之以鼻到视若法宝
    阿里云CDN+OSS完成图片加速
    听说你在为天天写业务代码而烦恼?
    从实践者的角度看软件架构的历史
    KVM虚拟化技术
    网络基础和 TCP、IP 协议
    分布式应用程序协调服务 ZooKeeper
    python 装饰器
    python 柯里化**
  • 原文地址:https://www.cnblogs.com/csnd/p/15613297.html
Copyright © 2011-2022 走看看