十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
javascript对URL中的参数进行简单加密处理
创新互联从2013年成立,公司以网站设计、网站制作、系统开发、网络推广、文化传媒、企业宣传、平面广告设计等为主要业务,适用行业近百种。服务企业客户成百上千,涉及国内多个省份客户。拥有多年网站建设开发经验。为企业提供专业的网站建设、创意设计、宣传推广等服务。 通过专业的设计、独特的风格,为不同客户提供各种风格的特色服务。
javascript的api本来就支持Base64,因此我们可以很方便的来进行编码和解码。
var encodeData = window.btoa("name=xiaomingage=10")//编码
var decodeData = window.atob(encodeData)//解码。
下面来个具体的例子来说明如何对url中参数进行转码,并取得解码后的参数
假如要跳转的url = "stu_info.html?name=xiaomingage=10"
转码:url = "stu_info.html?"+window.btoa("name=xiaomingage=10");
跳转:window.open(url)或者window.locaton.href = url;
解码:解码时我们首先要从url中获得参数列表,
我们可以通过var paramsString = window.location.search来获取url中?号开始的内容(url的查询部分)即"?name=xiaomingage=10";
然后去掉?号 paramsString = paramsString.substring(1) //"name=xiaomingage=10"
去掉 paramsString = paramsString.split("");//["name=xiaoming","age=10"]
需要指出的是 window.btoa这中编码方式不能直接作用于Unicode字符串。只能将ascci字符串或二进制数据转换成Base64编码过的字符串。如果要对Unicode字符进行编码可以将做如下转换。
var encodeData = window.btoa(window.encodeURIComponent("name=小明age=10"))//编码
var decodeData = window.decodeURIComponent(window.atob(encodeData))//解码。
获取url参数
//获取url参数
function getQueryString(name) {
var reg = new RegExp("(^|)" + name + "=([^]*)(|$)", "i");
var params = window.location.search.substr(1);
params = window.decodeURIComponent(window.atob(params));
var r = params.match(reg);
if (r != null) {
return decodeURI(r[2]);
}
return null;
}
获取公钥串
var encryptionJs = {
//公钥串
public_key :
'963D2956DC25DC34504BFDA93C1485DFAEB776929086D080593EDB770622811EECBA042A5E03B317722659ED951A9BF5B934E447C133F895FD906EDFE2E0436AD227483D7810AC3A5B028CB66C4DCC147086914665AD72C8B11F28EAE2F16B7678CF9AC9D17432395E37A5B998C6C569C7F9252F420CDCD7EB0E875CAF689197',
//公钥长度
public_length : "10001",
/**
* 加密串
× str 加密变量
* @Return bool
*/
edai_encryption:function(str){
var rsa = new RSAKey();
rsa.setPublic(encryptionJs.public_key, encryptionJs.public_length);
var res = rsa.encrypt(str);
return res;
},
/**
* 加密
*/
form_encryption:function(formDataStr){
/*datas=formDataStr.split("");
var real_name='';
var postStr = '';
$.each(datas,function(i,v){
var vv=v.split("=");
if(vv[0]=='real_name'){
real_name = 'real_name='+encryptionJs.edai_encryption(vv[1]);
}else{
if(postStr){
postStr+=''+vv[0]+'='+(vv[1]?vv[1]:'');
}else{
postStr=vv[0]+'='+(vv[1]?vv[1]:'');
}
}
});
postStr = real_name+'postData='+encryptionJs.edai_encryption(postStr);*/
datas=formDataStr.split("");
var postArr = new Array();
$.each(datas,function(i,v){
var vv=v.split("=");
postArr.push(vv[0]+'='+(vv[1]?encryptionJs.edai_encryption(vv[1]):''));
});
postStr = postArr.join('');
return postStr;
}
}
参考:RSA JS 在这个网页里读取
很多JavaScript在加密后是不可以再解密的,JavaScript加密相当于是字符串加密。JavaScript加密被叫做加密混淆,例如:sha1。
一:最简单的加密解密
二:转义字符"\"的妙用
三:使用Microsoft出品的脚本编码器Script. Encoder来进行编码 (自创简单解码)
四:任意添加NUL空字符(十六进制00H) (自创)
五:无用内容混乱以及换行空格TAB大法
六:自写解密函数法
七:错误的利用 (自创)
在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的JAVASCRIPT代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己写点东西也挺累的......^*^
我们清楚地认识到因为JAVASCRIPT代码是在IE中解释执行,要想绝对的保密是不可能的,我们要做的就是尽可能的增大拷贝者复制的难度,让他知难而退(但愿~!~),下面我结合自己这几年来的实践,及个人研究的心得,和大家一起来探讨一下网页中JAVASCRIPT代码的加密解密技术。
加密在我们前端的开发中也是经常遇见的。本文只把我们常用的加密方法进行总结。不去纠结加密的具体实现方式(密码学,太庞大了)。
常见的加密算法基本分为这几类,
RSA加密:RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。(这才是正经的加密算法)
非对称加密算法:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法
DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
AES这个标准用来替代原先的DES
DES/AES我们合并在一起介绍其用法和特点
Base64是一种用64个字符来表示任意二进制数据的方法。base64是一种编码方式而不是加密算法。只是看上去像是加密而已(吓唬人)。
是的,解密函数为:
window.btoa("test");//"dGVzdA=="
window.atob("dGVzdA==");//"test"
为什么要使用Base64加密呢?
Base64编码的作用:由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。它使用下面表中所使用的字符与编码。
而且base64特别适合在http,mime协议下快速传输数据。
base64其实不是安全领域下的加密解密算法。虽然有时候经常看到所谓的base64加密解密。其实base64只能算是一个编码算法,对数据内容进行编码来适合传输。虽然base64编码过后原文也变成不能看到的字符格式,但是这种方式很初级,很简单。
Base64编码方法要求把每三个8Bit的字节转换为四个6Bit的字节,其中,转换之后的这四个字节中每6个有效bit为是有效数据,空余的那两个 bit用0补上成为一个字节。因此Base64所造成数据冗余不是很严重,Base64是当今比较流行的编码方法,因为它编起来速度快而且简单。