c# aes/cbc/pkcs5padding 模式的算法

摘要:
paramname=“encod”>paramname=“cap”>}returnbuilder.ToString();&书信电报;paramname=“s”>要解密的字符串<paramname=“sKey”>按键&lt/returns>stringIV){RijndaelManagedrijndaelCipher=newRijndael Managed();
#region 新订购接口加解密
        /// <summary>
        /// 对字符进行UrlEncode编码 与Java通用版
        /// string转Encoding格式
        /// </summary>
        /// <param name="text"></param>
        /// <param name="encod">编码格式</param>
        /// <param name="cap">是否输出大写字母</param>
        /// <returns></returns>
        public static string UrlEncodes(string text, Encoding encod, bool cap = true)
        {
            if (cap)
            {
                StringBuilder builder = new StringBuilder();
                foreach (char c in text)
                {
                    if (System.Web.HttpUtility.UrlEncode(c.ToString(), encod).Length > 1)
                    {
                        builder.Append(System.Web.HttpUtility.UrlEncode(c.ToString(), encod).ToUpper());
                    }
                    else
                    {
                        builder.Append(c);
                    }
                }
                return builder.ToString();
            }
            else
            {
                string encodString = System.Web.HttpUtility.UrlEncode(text, encod);
                return encodString;
            }
        }

        /// <summary>
        /// AES加密 对应java中的 aes/cbc/pkcs5padding 模式的算法
        /// </summary>
        /// <param name="s">待加密的字符串</param>
        /// <param name="sKey">密钥</param>
        /// <returns></returns>
        public static string AesEncrypt(string str, string Key,string IV)
        {
            byte[] keyArray = Encoding.UTF8.GetBytes(Key);
            byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
            RijndaelManaged rDel = new RijndaelManaged();
            rDel.Key = keyArray;
            rDel.Mode = CipherMode.CBC;
            rDel.Padding = PaddingMode.PKCS7;
            rDel.IV = Encoding.UTF8.GetBytes(IV);
            ICryptoTransform cTransform = rDel.CreateEncryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
        }

        /// <summary>
        /// AES解密  对应java中的 aes/cbc/pkcs5padding 模式的算法
        /// </summary>
        /// <param name="s">待解密的字符串</param>
        /// <param name="sKey">密钥</param>
        /// <returns>返回空为解析失败</returns>
        public static string AesDecrypt(string str, string key,string IV )
        {
            RijndaelManaged rijndaelCipher = new RijndaelManaged();
            rijndaelCipher.Mode = CipherMode.CBC;
            rijndaelCipher.Padding = PaddingMode.PKCS7;
            rijndaelCipher.KeySize = 128;
            rijndaelCipher.BlockSize = 128;
            byte[] encryptedData = Convert.FromBase64String(str);
            byte[] pwdBytes = System.Text.Encoding.UTF8.GetBytes(key);
            byte[] keyBytes = new byte[16];
            int len = pwdBytes.Length;
            if (len > keyBytes.Length)
                len = keyBytes.Length;
            System.Array.Copy(pwdBytes, keyBytes, len);
            rijndaelCipher.Key = keyBytes;
            rijndaelCipher.IV = Encoding.UTF8.GetBytes(IV);
            ICryptoTransform transform = rijndaelCipher.CreateDecryptor();
            byte[] plainText = transform.TransformFinalBlock(encryptedData, 0, encryptedData.Length);
            return Encoding.UTF8.GetString(plainText);
        }
        public static string GenerateMD5(string txt)
        {
            using (MD5 mi = MD5.Create())
            {
                byte[] buffer = Encoding.Default.GetBytes(txt);
                //开始加密
                byte[] newBuffer = mi.ComputeHash(buffer);
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < newBuffer.Length; i++)
                {
                    sb.Append(newBuffer[i].ToString("x2"));
                }
                return sb.ToString();
            }
        } 
        #endregion

免责声明:文章转载自《c# aes/cbc/pkcs5padding 模式的算法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VTK 如何不使用qvtkwidget,而直接把vtk出口嵌入qt窗口中安装完SAP后BASIS的配置流程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SpringBoot--Easycode插件自定义模板

  最近准备做个项目,在配置项目环境的时候,使用Easycode插件生成entity,controller,service,dao,mapper,前面只是单纯地介绍了Easycode插件的集成,但由于使用的是Easycode插件默认的模板,导致最终生成的文件与自己想要的效果有所差别。   所以花了一下午的时间研究如何自定义模板,最终设计出了一套比较完整的模...

KendoUI 用下来的小总结

Kendoui 官网地址:http://demos.telerik.com/kendo-ui/ Aspnetmvc * 引用jquery.1.10以上 * 1.项目引用 Kendo.Mvc.dll 2.页面引用 @using Kendo.Mvc.UI; 3.Name和 HtmlAttribute(new {id=’’}) 没有id就用name作为默认id...

Chrome浏览器在Windows8/8.1下显示模糊的解决办法

  刚刚换了一台新电脑,安装完Windows 8.1,屏幕分辨率被自动设置为1920 X 1080,打开Chrome浏览器却发现内容显示非常模糊,不论如何改变Chrome的设置均没有效果,开启或关闭Chrome的硬件加速功能也无济于事。不光Chrome如此,许多其它应用程序和对话框中的文字也显示很模糊。   其实这是由于DPI缩放所引起的,可通过调整DPI...

Linux升级OpenSSH 和 OpenSSL 详细步骤

升级所需的安装包都应提前放到服务器,以免后面无法连接 #####准备工作##### 一、配置更新 yum源 (是为了可以在线下载更新需要的安装包) 1.删除当前所有yum源文件cd /etc/yum.repos.drm -rf 文件名 2.编辑新的yum源文件 vi rhel6.7.repo 粘贴如下信息保存 若这个粘贴出现错误就用CentOS-Base...

js实现图片向上播放(轮番滚动)

js实现图片向上播放(轮番滚动)   实现方式,多种多样,这里我们来看javascript实现方式,重点是研究里面的源代码; 看看别人是如何写出“优雅的代码” <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/...

为CDH 5.7集群添加Kerberos身份验证及Sentry权限控制

转载请注明出处:http://www.cnblogs.com/xiaodf/ 4. 为CDH 5集群添加Kerberos身份验证 4.1 安装sentry1、点击“操作”,“添加服务”;2、选择sentry,并“继续”; 3、选择一组依赖关系 4、确认新服务的主机分配 5、配置存储数据库;  在mysql中创建对应用户和数据库: mysql>cre...