URL参数加密解密

/// <summary>
        /// DES加密字符串
        /// </summary>
        /// <param name="encryptString">待加密的字符串</param>
        /// <param name="encryptKey">加密密钥,要求为8位</param>
        /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
        public static string EncryptString(string encryptString, string encryptKey)
        {
            try
            {
                byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
                byte[] rgbIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
                byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
                DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                string s = Convert.ToBase64String(mStream.ToArray());
                s = s.Replace("+", ".").Replace("&", "/");
                //将加密的字符串里的+ &给替换到 否则URL传参过去会失效\
                return s;
            }
            catch
            {
                return encryptString;
            }
        }

/// <summary>
        /// DES解密字符串
        /// </summary>
        /// <param name="decryptString">待解密的字符串</param>
        /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
        /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
        public static string DecryptString(string decryptString,string decryptKey)
        {
            try
            {
                byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
                byte[] rgbIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
                //把要解密的字符串的.跟/替换到原来没有解密的样子
                decryptString = decryptString.Replace(".", "+").Replace("/", "&");
                byte[] inputByteArray = Convert.FromBase64String(decryptString);
                DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                string s = Encoding.UTF8.GetString(mStream.ToArray());
                return s;
            }
            catch
            {
                return decryptString;
            }
        }

时间: 2024-10-05 07:39:33

URL参数加密解密的相关文章

DES加密后get获取url参数无法解密问题

参考:http://www.cnblogs.com/lori/archive/2011/09/08/2170979.html 问题,就是URL编码问题,如果不对URL进行编码直接加码,那么在解码时,如果字符串存在“+”这种特殊符号,在解码时会出它替换成“ ”,此时在解密就会无法解开,导致错误的结果. 本人解决方法: 先对字符先加密,再url编码,这时不会出现+号等字符,然后获取参数后 直接 解密(因为获取的参数就没有%之类的了)即可,注意,此处我也不明白,估计是浏览器 自动 url解码或是前面有

h5对接,url参数加密

最近在做url带参数跳转页面,发现url地址栏会显示请求的参数,用的是ajax中的post方式,但是貌似没有自动进行加密,这里找到一个解决方案,可以对url中的参数进行加密,在从url中获取参数时直接解密即可.具体实现方式如下: 比如我需要请求的url未加密的地址为: 加密后的地址栏为: 实现加密方法: var c = "house_id="+house_id+"&customer_id="+customer_id+"&house_addr

ASP.NET - URL中参数加密解密操作

效果: 代码: using System; using System.Text; using System.IO; using System.Security.Cryptography; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write("<a href = " + "http

Asp.Net url参数加密存在特殊符号处理方法

Url出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,服务器端无法获得正确的参数值,解决办法. 使用System.Web.HttpUtility.UrlEncode()方法将这些字符转化成服务器可以识别的字符,对应关系如下: +       ------------>    %2b 空格  ------------>    %20 /        ------------>    %2f ?       ------------>    %3f %      -

URL request加密&amp;amp;解密方法

摘要:URL request加密&解密方法 加密方法 Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(e.Item.Cells[3].Text)).Replace("+", "%2B") 解密方法 lblEmpID.Text = System.Text.Encoding.Default.GetString(Convert.FromBase64String(Request.QuerySt

java进阶12 Base64 UrlBase64 Hex 加密 解密技术

java的加密与解密技术: 现在的加密技术主要有 单向加密算法:以MD5 SHA算法为代表 对称加密算法:以DES 三重DES AES PBE算法为代表 非对称加密算法:以RSA为代表 简要的说下这三种加密算法的区别 先是单向加密算法,顾名思义,它不会有密钥,因为它是单向的,加密之后无法解密,就连程序猿都无法知道加密之后的东西是什么 主要用处是数据完整性的验证. 对称加密算法,其特征是公钥与私钥相同.一般用来数据储存,比如将数据加密之后存入数据库,那么数据库管理员就无法泄密数据库中的类容 有密钥

一段有用的javascript加密解密

今天在做一个老项目时,遇到一个需求,在javascript将url中的参数加密解密,从网上找发现了这段有用的代码: [javascript] view plaincopy <SCRIPT LANGUAGE="JavaScript"> <!-- Begin function Encrypt(str, pwd) { if(str=="")return ""; str = escape(str); if(!pwd || pwd==&q

利用MVC的过滤器实现url的参数加密和解密

最近在与一个IOS应用做接口对接,之前一直都没有遇到什么很大的问题,但是有一天发现可以通过软件解析app的url,然后直接通过url的拼接修改接口数据,这一下使得数据的安全性和准确性都降低了,于是就想到了url加密. 然后在网上查了一下url的加密算法,使用比较普遍的还是Base64的加密,但是对于如何实现加密,网上的资料确不多,可能是我搜索的关键词不对.既然没有现成的参考文件,那么就只能靠自己了.因为所有的Controller都继承一个基Controller,所以比较自然的想到在基Contro

[转]java利用AES实现URL的参数加密

原文地址:http://h5566h.iteye.com/blog/1465426 很多时候需要在URL传参,希望URL参数能够加密,这里我结合了文章http://www.2cto.com/kf/201112/114046.html  提供的思路,然后结合java的ASE加密实现,写了下面的代码: 代码主要考虑两个问题:1.加密过的字符必须能有使用Url传输 2.加密算法必须是对称算法,通过私钥可以解密 另外:代码中为什么要把二进制转换成16进制呢,因为强制把byte数组转化成String的话,