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

  • 相关阅读:
    TreeView使用集锦
    net 下安装、调试的常见问题与错误及解决方法 [转]
    Oracle中使用同义词
    再推荐两个blog和一首好歌
    一点感慨
    推荐一个blog和一个工具
    买书了
    第一次做饭
    ORA00911错误及解决方法
    C#3.0美文收集
  • 原文地址:https://www.cnblogs.com/csnd/p/15613297.html
Copyright © 2020-2023  润新知