C#AES加密实例

最近写了另一个AES加密封装的接口,因为之前一直没用过,所以写了好一会才研究出来。

封装源代码如下:

   /// 
        /// AES加密
        /// 
        /// 需要加密的字符串
        /// 32位密钥
        ///向量(默认偏移量)
        /// 加密后的字符串
        public static string Encrypt(string str, string key,string lv)
        {
            try
            {

                Byte[] keyArray = System.Text.Encoding.UTF8.GetBytes(key);
                Byte[] toEncryptArray = System.Text.Encoding.UTF8.GetBytes(str);
                var rijndael = new System.Security.Cryptography.RijndaelManaged();
                rijndael.Key = keyArray;
                rijndael.Mode = System.Security.Cryptography.CipherMode.CBC;
                rijndael.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
                rijndael.IV = System.Text.Encoding.UTF8.GetBytes(Iv);
                System.Security.Cryptography.ICryptoTransform cTransform = rijndael.CreateEncryptor();
                Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
                return Convert.ToBase64String(resultArray, 0, resultArray.Length);

            }
            catch (Exception ex)
            {
                Logger.Error("调用AES加密方法异常,异常原因:" + ex.Message);
                return "";
            }
        }

需要注意的几点:

第一:AES的加密模式,有ECB,CBC,CTR,OFB,CFB等方式,如图:
C#AES加密实例_第1张图片

不要搞错了,这一段代码:

rijndael.Mode = System.Security.Cryptography.CipherMode.CBC;

其次是填充方式,有packs5padding,packs7padding等填充方式,可以根据实际情况选择,如下图:
C#AES加密实例_第2张图片
这一段:

rijndael.Padding = System.Security.Cryptography.PaddingMode.PKCS7;

偏移量以及字符集:

 rijndael.IV = System.Text.Encoding.UTF8.GetBytes(Iv);

最后,调用:

Encrypt(str, ZhiTengDaK9LogAll.DWSErrorSign(),lv);

你可能感兴趣的:(.NET,Web,winform窗体,MVC,.net,C#)