C#AES加密实例

30 篇文章 2 订阅
23 篇文章 1 订阅

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

封装源代码如下:

   /// <summary>
        /// AES加密
        /// </summary>
        /// <param name="str">需要加密的字符串</param>
        /// <param name="key">32位密钥</param>
        ///<param name="lv">向量(默认偏移量)</param>
        /// <returns>加密后的字符串</returns>
        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<ZhiTengDaK9LogAll>.Error("调用AES加密方法异常,异常原因:" + ex.Message);
                return "";
            }
        }

需要注意的几点:

第一:AES的加密模式,有ECB,CBC,CTR,OFB,CFB等方式,如图:
在这里插入图片描述

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

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

其次是填充方式,有packs5padding,packs7padding等填充方式,可以根据实际情况选择,如下图:
在这里插入图片描述
这一段:

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

偏移量以及字符集:

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

最后,调用:

Encrypt(str, ZhiTengDaK9LogAll.DWSErrorSign(),lv);
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值