• 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();
                                }
                            }
                        }
                    }
                }
            }
  • 相关阅读:
    小白使用分布式追踪系统
    小白使用Hystrix
    Java泛型的协变与逆变
    try-finally的时候try里面带return
    URLEncoder.encode编码空格变+号
    匿名内部类和Lambda表达式是一样的吗?
    Spring Cloud Config配置git私钥出错
    Git本地已有项目关联远程仓库
    第一次使用HSDB
    Springboot应用使用Docker部署
  • 原文地址:https://www.cnblogs.com/xyz0835/p/5775850.html
Copyright © 2020-2023  润新知