zoukankan      html  css  js  c++  java
  • <经验杂谈>C#使用AES加密解密的简单介绍

    AES 算法是基于置换和代替的。置换是数据的重新排列,而代替是用一个单元数据替换另一个。AES 使用了几种不同的技术来实现置换和替换。

    以下是我自己用c#研究出来算法Code:

            /// <summary>
            ///  AES 加密
            /// </summary>
            /// <param name="str"></param>
            /// <param name="key"></param>
            /// <returns></returns>
            public static string AesEncrypt(string str, string key)
            {
                try
                {
                    if (string.IsNullOrEmpty(str)) return null;
                    Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
    
                    System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
                    {
                        Key = Encoding.UTF8.GetBytes(key),
                        Mode = System.Security.Cryptography.CipherMode.ECB,
                        Padding = System.Security.Cryptography.PaddingMode.PKCS7
                    };
    
                    System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateEncryptor();
                    Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    
                    return Convert.ToBase64String(resultArray, 0, resultArray.Length);
                }
                catch (Exception ex)
                {
                    LogHelper.WriteLog(LogFile.Error, ex.Message);
                    return "";
                }
            }
    
            /// <summary>
            ///  AES 解密
            /// </summary>
            /// <param name="str"></param>
            /// <param name="key"></param>
            /// <returns></returns>
            public static string AesDecrypt(string str, string key)
            {
                try
                {
                    if (string.IsNullOrEmpty(str)) return null;
                    Byte[] toEncryptArray = Convert.FromBase64String(str);
    
                    System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
                    {
                        Key = Encoding.UTF8.GetBytes(key),
                        Mode = System.Security.Cryptography.CipherMode.ECB,
                        Padding = System.Security.Cryptography.PaddingMode.PKCS7
                    };
    
                    System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateDecryptor();
                    Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    
                    return Encoding.UTF8.GetString(resultArray);
                }
                catch (Exception ex)
                {
                    LogHelper.WriteLog(LogFile.Error, ex.Message);
                    return "";
                }
            }
  • 相关阅读:
    好用的在线作图软件
    xml简介
    P1832 A+B Problem(再升级)
    P1831 杠杆数
    P1802 5倍经验日
    P1679 神奇的四次方数
    Android学习四、Android中的Adapter
    Android Activity Fragment 生命周期
    《C语言编写 学生成绩管理系统》
    线程池QueueUserWorkItem
  • 原文地址:https://www.cnblogs.com/benpao/p/6746594.html
Copyright © 2011-2022 走看看