zoukankan      html  css  js  c++  java
  • AES加密解密 助手类 CBC加密模式

    string str = "2018";
    string result1 = AESHelper.AesEncrypt(str);
    string result2 = AESHelper.AesDecrypt(result1);
    namespace Demo
    {
        /// <summary>
        /// AES加密解密 助手类
        /// CBC加密模式
        /// </summary>
        public class AESHelper
        {
            /// <summary>
            /// 默认密钥-长度32位
            /// </summary>
            private const string Key = "32位";
    
            /// <summary>
            /// 默认向量-长度16位
            /// </summary>
            private const string Iv = "16位";
    
    
            /// <summary>  
            /// AES加密  
            /// </summary>  
            /// <param name="str">需要加密字符串</param>  
            /// <returns>加密后字符串</returns> 
            public static string AesEncrypt(string str)
            {
                return Encrypt(str, Key);
            }
    
            /// <summary>  
            /// AES解密  
            /// </summary>  
            /// <param name="str">需要解密字符串</param>  
            /// <returns>解密后字符串</returns>  
            public static string AesDecrypt(string str)
            {
                return Decrypt(str, Key);
            }
    
    
            /// <summary>
            ///  AES 加密
            /// </summary>
            /// <param name="str">明文(待加密)</param>
            /// <param name="key">密文</param>
            /// <returns></returns>
            private static string Encrypt(string str, string key)
            {
                if (string.IsNullOrEmpty(str)) return null;
                Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
    
                RijndaelManaged rm = new RijndaelManaged
                {
                    Key = Encoding.UTF8.GetBytes(key),
                    Mode = CipherMode.ECB,
                    Padding = PaddingMode.PKCS7,
                    IV = Encoding.UTF8.GetBytes(Iv)
                };
    
                ICryptoTransform cTransform = rm.CreateEncryptor();
                Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    
                return Convert.ToBase64String(resultArray, 0, resultArray.Length);
            }
            /// <summary>
            ///  AES 解密
            /// </summary>
            /// <param name="str">明文(待解密)</param>
            /// <param name="key">密文</param>
            /// <returns></returns>
            private static string Decrypt(string str, string key)
            {
                if (string.IsNullOrEmpty(str)) return null;
                Byte[] toEncryptArray = Convert.FromBase64String(str);
    
                RijndaelManaged rm = new RijndaelManaged
                {
                    Key = Encoding.UTF8.GetBytes(key),
                    Mode = CipherMode.ECB,
                    Padding = PaddingMode.PKCS7,
                    IV = Encoding.UTF8.GetBytes(Iv)
                };
    
                ICryptoTransform cTransform = rm.CreateDecryptor();
                Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
    
                return Encoding.UTF8.GetString(resultArray);
            }
        }
    }

    文章内容参考于(原出处):

    C#几种常用的加密方式

    C#加密解密(AES)-AESHelper

  • 相关阅读:
    contentEditable
    Web开发工具(插件)收集
    用limit 传变量TO 存储过程解决方案(续)
    ASP.NET1.1和ASP.NET2.0中数据库连接字符串的不同设置
    按比例微缩图片的一段小小的JS代码
    研究下市场上有哪些软件项目/产品,哪些是值得做的?
    Ajax联动下拉框的实现例子
    C#装箱与拆箱
    在VS2005连接SQL2005时不允许远程连接
    联系我们
  • 原文地址:https://www.cnblogs.com/gilbert/p/9982210.html
Copyright © 2011-2022 走看看