zoukankan      html  css  js  c++  java
  • AES加密解密(根据指定秘钥)

    最近在做调用第三方接口,要求入参AES加密,并且秘钥为16位的长度,在此记录一下。

    首先引用命名空间:

    using System.IO;

    using System.Text;

    using System.Security.Cryptography;

     1  /// <summary>
     2         /// AES加密(无向量)
     3         /// </summary>
     4         /// <param name="plainBytes">被加密的明文</param>
     5         /// <param name="key">密钥</param>
     6         /// <returns>密文</returns>
     7         public  string AESEncrypt(string Data, string Key)
     8         {
     9             MemoryStream mStream = new MemoryStream();
    10             RijndaelManaged aes = new RijndaelManaged();
    11 
    12             byte[] plainBytes = Encoding.UTF8.GetBytes(Data);
    13             Byte[] bKey = new Byte[16];
    14             Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);
    15 
    16             aes.Mode = CipherMode.ECB;
    17             aes.Padding = PaddingMode.PKCS7;
    18             aes.KeySize = 128;
    19             //aes.Key = _key;
    20             aes.Key = bKey;
    21             //aes.IV = _iV;
    22             CryptoStream cryptoStream = new CryptoStream(mStream, aes.CreateEncryptor(), CryptoStreamMode.Write);
    23             try
    24             {
    25                 cryptoStream.Write(plainBytes, 0, plainBytes.Length);
    26                 cryptoStream.FlushFinalBlock();
    27                 return Convert.ToBase64String(mStream.ToArray());
    28             }
    29             finally
    30             {
    31                 cryptoStream.Close();
    32                 mStream.Close();
    33                 aes.Clear();
    34             }
    35         }

     1  #region 解密
     2         /// <summary>
     3         /// AES解密(无向量)
     4         /// </summary>
     5         /// <param name="encryptedBytes">被加密的明文</param>
     6         /// <param name="key">密钥</param>
     7         /// <returns>明文</returns>
     8         public  string AESDecrypt(String Data, String Key)
     9         {
    10             Byte[] encryptedBytes = Convert.FromBase64String(Data);
    11             Byte[] bKey = new Byte[16];
    12             Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);
    13 
    14             MemoryStream mStream = new MemoryStream(encryptedBytes);
    15             //mStream.Write( encryptedBytes, 0, encryptedBytes.Length );
    16             //mStream.Seek( 0, SeekOrigin.Begin );
    17             RijndaelManaged aes = new RijndaelManaged();
    18             aes.Mode = CipherMode.ECB;
    19             aes.Padding = PaddingMode.PKCS7;
    20             aes.KeySize = 128;
    21             aes.Key = bKey;
    22             //aes.IV = _iV;
    23             CryptoStream cryptoStream = new CryptoStream(mStream, aes.CreateDecryptor(), CryptoStreamMode.Read);
    24             try
    25             {
    26                 byte[] tmp = new byte[encryptedBytes.Length + 32];
    27                 int len = cryptoStream.Read(tmp, 0, encryptedBytes.Length + 32);
    28                 byte[] ret = new byte[len];
    29                 Array.Copy(tmp, 0, ret, 0, len);
    30                 return Encoding.UTF8.GetString(ret);
    31             }
    32             finally
    33             {
    34                 cryptoStream.Close();
    35                 mStream.Close();
    36                 aes.Clear();
    37             }
    38         }
    39         #endregion

    调用时:string sendData = publicSH.AESDecrypt(sendData, "HYYSIENDEUFHVKDA");//返回信息解密 sendData 为要加密或者解密的信息 ,第二个参数是16位的秘钥
    
    
    
    
    
    
  • 相关阅读:
    前端攻城狮学习笔记九:让你彻底弄清offset
    JavaScript中Element与Node的区别,children与childNodes的区别
    JavaScript代码优化实战之一:缓存变量,关键字过滤
    【转】纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等),NB么
    包装对象——JavaScript中原始类型拥有属性的原因
    关于两个容积不同的瓶子中装水可以得到哪些精确值的问题的算法
    JavaScript中判断鼠标按键(event.button)
    累了休息一会儿吧——分享一个JavaScript版扫雷游戏
    用CSS让未知高度内容垂直方向居中
    空间换时间,把递归的时间复杂度降低到O(2n)
  • 原文地址:https://www.cnblogs.com/ysaw/p/13361079.html
Copyright © 2011-2022 走看看