zoukankan      html  css  js  c++  java
  • AES加解密

     public class AESHelper
        {
            /// <summary>
            /// 获取密钥
            /// </summary>
            private static string IDKey
            {
                get
                {
                    return "3vZ8rRLUME4b3K8xXovptGodOUXSCjrc";
                }
            }
    
            private static string nameKey
            {
    
                get
                {
                    return "1a54CRZ7WdwGYdNPonWkSMtHyRhlnv6q"; 
                }
            }
    
            //默认密钥向量
            private static byte[] _key1 = { 0x7f, 0x0a, 0x2d, 0x96, 0x94, 0xa5, 0xc2, 0x7b, 0xaa, 0x89, 0x00, 0x8b, 0xf3, 0xab, 0x15, 0xfd };
          /// <summary>
            /// AES加密算法
            /// </summary>
            /// <param name="plainText">明文字符串</param>
            /// <returns>将加密后的密文转换为Base64编码,以便显示</returns>
            public static string AESEncryptID(string plainText)
            {
                //分组加密算法
                SymmetricAlgorithm aes = Rijndael.Create();
                byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组
                //设置密钥及密钥向量
                aes.Key = Encoding.UTF8.GetBytes(IDKey);
                aes.IV = _key1;
                byte[] cipherBytes = null;
                using (MemoryStream ms = new MemoryStream())
                {
                    using (CryptoStream cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(inputByteArray, 0, inputByteArray.Length);
                        cs.FlushFinalBlock();
                        cipherBytes = ms.ToArray();//得到加密后的字节数组
                        cs.Close();
                        ms.Close();
                    }
                }
                return Convert.ToBase64String(cipherBytes);
            }
    
            public static string AESEncryptName(string plainText)
            {
                //分组加密算法
                SymmetricAlgorithm aes = Rijndael.Create();
                byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字节数组
                //设置密钥及密钥向量
                aes.Key = Encoding.UTF8.GetBytes(nameKey);
                aes.IV = _key1;
                byte[] cipherBytes = null;
                using (MemoryStream ms = new MemoryStream())
                {
                    using (CryptoStream cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(inputByteArray, 0, inputByteArray.Length);
                        cs.FlushFinalBlock();
                        cipherBytes = ms.ToArray();//得到加密后的字节数组
                        cs.Close();
                        ms.Close();
                    }
                }
                return Convert.ToBase64String(cipherBytes);
            }
    
            /// <summary>
            /// AES解密
            /// </summary>
            /// <param name="cipherText">密文字符串</param>
            /// <returns>返回解密后的明文字符串</returns>
            public static string AESDecryptId(string showText)
            {
                byte[] cipherText = Convert.FromBase64String(showText);
    
                SymmetricAlgorithm aes = Rijndael.Create();
                aes.Key = Encoding.UTF8.GetBytes(IDKey);
                aes.IV = _key1;
                byte[] decryptBytes = new byte[cipherText.Length];
                using (MemoryStream ms = new MemoryStream(cipherText))
                {
                    using (CryptoStream cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Read))
                    {
                        cs.Read(decryptBytes, 0, decryptBytes.Length);
                        cs.Close();
                        ms.Close();
                    }
                }
                return Encoding.UTF8.GetString(decryptBytes).Replace("", "");   ///将字符串后尾的''去掉
            }
    
            public static string AESDecryptName(string showText)
            {
                byte[] cipherText = Convert.FromBase64String(showText);
    
                SymmetricAlgorithm aes = Rijndael.Create();
                aes.Key = Encoding.UTF8.GetBytes(nameKey);
                aes.IV = _key1;
                byte[] decryptBytes = new byte[cipherText.Length];
                using (MemoryStream ms = new MemoryStream(cipherText))
                {
                    using (CryptoStream cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Read))
                    {
                        cs.Read(decryptBytes, 0, decryptBytes.Length);
                        cs.Close();
                        ms.Close();
                    }
                }
                return Encoding.UTF8.GetString(decryptBytes).Replace("", "");   ///将字符串后尾的''去掉
            }
    
            public static void genKey()
            {
    
                var generator = new RijndaelManaged();
                var key = Convert.ToBase64String(generator.Key);
                byte[] iv = generator.IV;
    
                Console.WriteLine(key);
                Console.WriteLine(generator.IV);
            }
        }

       Key:为32位的字符

     byte:0-255之间的16进制数字

  • 相关阅读:
    机器学习中的概念和名词解释
    NLPIR文本智能分词是语义挖掘的关键
    学习NLPIR语义智能教学科研平台要这样打开
    NLPIR语义智能:大数据与人才成行业发展瓶颈
    NLPIR:大数据挖掘技术引导数据应用
    2018大数据新动态:NLPIR语义智能教学科研平台
    灵玖软件:大数据语言新特征发现
    JZSearch大数据智能搜索网络数据
    大数据信息挖掘中文分词是关键
    灵玖软件:NLPIR文本智能挖掘提速2.0
  • 原文地址:https://www.cnblogs.com/25miao/p/6867798.html
Copyright © 2011-2022 走看看