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();

  • 相关阅读:
    jira 解决结果配置
    .net core ef mysql in 参数化写法
    CentOS安装破解版Jira 亲测有效(附带破解包)
    实现js读取Excel数据
    android权限(permission)大全
    如何搭建Nuget服务器
    WebApi配置Swagger
    Aps.Net WebApi依赖注入
    解决.Net Core跨域问题
    一篇关于Asp.Net Model验证响应消息的问题处理
  • 原文地址:https://www.cnblogs.com/csnd/p/15613297.html
Copyright © 2011-2022 走看看