• 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();
                                }
                            }
                        }
                    }
                }
            }
  • 相关阅读:
    input中的disabled 和 readonly的区别
    pwa-serviceWorker与页面通信postMessage
    PWA之push服务
    vue+typescript入门学习
    基于node 搭建http2服务
    阻止默认行为是配合passive使用
    正则表达式exec方法的陷阱
    serviceWorker-资料参考
    MVC的增删改和Razor
    MVC基础
  • 原文地址:https://www.cnblogs.com/xyz0835/p/5775850.html
Copyright © 2020-2023  润新知