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

  • 相关阅读:
    kill一个pthread_test.bin测试程序主线程、子线程退出kernel flow
    signal bit operation
    pthread
    信号发送处理流程
    sdcardfs
    node小贴士03
    node小贴士02
    node小贴士01
    siteserver cms 搜索功能
    语法的高亮显示
  • 原文地址:https://www.cnblogs.com/csnd/p/15613297.html
Copyright © 2020-2023  润新知