zoukankan      html  css  js  c++  java
  • C# AES 128加密,解密示例

            /// <summary>
            /// AES加密
            /// </summary>
            /// <param name="clearTxt"></param>
            /// <returns></returns>
            public static string AesEncrypt(string clearTxt)
            {
                string secretKey = "I15TMSLO0KXUWTHO";
    
                byte[] keyBytes = Encoding.UTF8.GetBytes(secretKey);
    
                using (RijndaelManaged cipher = new RijndaelManaged())
                {
                    cipher.Mode = CipherMode.CBC;
                    cipher.Padding = PaddingMode.PKCS7;
                    cipher.KeySize = 128;
                    cipher.BlockSize = 128;
                    cipher.Key = keyBytes;
                    cipher.IV = keyBytes;
    
                    byte[] valueBytes = Encoding.UTF8.GetBytes(clearTxt);
    
                    byte[] encrypted;
                    using (ICryptoTransform encryptor = cipher.CreateEncryptor())
                    {
                        using (MemoryStream ms = new MemoryStream())
                        {
                            using (CryptoStream writer = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
                            {
                                writer.Write(valueBytes, 0, valueBytes.Length);
                                writer.FlushFinalBlock();
                                encrypted = ms.ToArray();
    
                                StringBuilder sb = new StringBuilder();
                                for (int i = 0; i < encrypted.Length; i++)
                                    sb.Append(Convert.ToString(encrypted[i], 16).PadLeft(2, '0'));
                                return sb.ToString().ToUpperInvariant();
                            }
                        }
                    }
                }
            }
    
            /// <summary>
            /// AES解密
            /// </summary>
            /// <param name="encrypted"></param>
            /// <returns></returns>
            public static string AesDecypt(string encrypted)
            {
                string secretKey = "I15TMSLO0KXUWTHO";
    
                byte[] keyBytes = Encoding.UTF8.GetBytes(secretKey);
    
                using (RijndaelManaged cipher = new RijndaelManaged())
                {
                    cipher.Mode = CipherMode.CBC;
                    cipher.Padding = PaddingMode.PKCS7;
                    cipher.KeySize = 128;
                    cipher.BlockSize = 128;
                    cipher.Key = keyBytes;
                    cipher.IV = keyBytes;
    
                    List<byte> lstBytes = new List<byte>();
                    for (int i = 0; i < encrypted.Length; i += 2)
                        lstBytes.Add(Convert.ToByte(encrypted.Substring(i, 2), 16));
    
                    using (ICryptoTransform decryptor = cipher.CreateDecryptor())
                    {
                        using (MemoryStream msDecrypt = new MemoryStream(lstBytes.ToArray()))
                        {
                            using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                            {
                                using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                                {
                                    return srDecrypt.ReadToEnd();
                                }
                            }
                        }
                    }
                }
            }
  • 相关阅读:
    61. 最长不含重复字符的子字符串
    60. 礼物的最大价值 (未理解)
    59. 把数字翻译成字符串
    58. 把数组排成最小的数
    57. 数字序列中某一位的数字 (不懂)
    spring data jpa 官方文档
    idea 编译报错 源发行版 1.8 需要目标发行版 1.8
    idea maven 依赖报错 invalid classes root
    solr
    spring boot 官方文档
  • 原文地址:https://www.cnblogs.com/xyz0835/p/5775850.html
Copyright © 2011-2022 走看看