1.项目需求
项目中要求对地址中传递的一个参数进行简单的明文加密
2.解决过程
2.1 一开始准备使用js的escape和unescape对参数加密但由于参数是由英文字母和下划线等符号组成,而js的escape和unescape函数只对中文字符进行加解密,遂放弃
2.1.1 js有一个函数是可以将内容转化为十六进制的。就是escape函数。可以讲值转化为16进制。如果有中文的话,就会出现%uXXXX。如果没有中文。则不会出现%u。 这样就可以通过此函数来判断是否输入的是包含有中文的。
如:function btn_escape_onclick(){
var aaa="name=xcl;password=123";
var aaa_escape=escape(aaa);
alert("原来:"+aaa+"\n"+"转义后:"+aaa_escape);
var bbb="我们123"
var bbb_escape=escape(bbb);
alert("原来:"+bbb+"\n"+"转以后:"+bbb_escape);
if(bbb_escape.indexOf("%u")>-1){
alert(bbb+" 包含中文");
}
}
2.1.2 escape是js自带的函数。这样就可以用来判断是否输入了中文了。只要将转义后的内容判断是否存在%u就可以了。
如: var bbb="我们123"
var bbb_escape=escape(bbb);
if(bbb_escape.indexOf("%u")>-1){
alert(bbb+" 包含中文");
}
原来 :name=xcl;password=123
转义后:name%3Dxcl%3Bpassword%3D123
原来 :我们123
转以后:%u6211%u4EEC123
2.2 js中escape()函数和unescape()函数的功能
2.2.1 escape 方法
对String对象编码以便它们能在所有计算机上可读,
escape(charString)
必选项 charstring 参数是要编码的任意 String 对象或文字。
说明
escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以
及 其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是
“%20 ” 。
字符值大于 255 的以 %uxxxx 格式存储。
注意 :escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI 和encodeURIComponent 方法。
解码用 escape 方法进行了编码的 String 对象。
unescape(charstring)
必选项 charstring 参数是要解码的 String 对象。
说明
unescape 方法返回一个包含 charstring 内容的字符串值。所有以 %xx 十六进制形式编码的字符都用 ASCII 字符集中等价的字符代替。
以 %uxxxx 格式(Unicode 字符)编码的字符用十六进制编码 xxxx 的 Unicode 字符代替.
注意 : unescape 方法不能用于解码统一资源标识码 (URI)。解该码可使用 decodeURI 和 decodeURIComponent 方法。
2.3 在前辈的指导下使用了base64加解密技术
2.3.1 什么是base64
https://blog.csdn.net/qq_20545367/article/details/79538530
2.3.2 base64在vue2.0中的应用
https://blog.csdn.net/qq_35844177/article/details/70597597
2.3.3 vue项目中利用base64上传图片和文件
https://blog.csdn.net/weixin_37861326/article/details/81300698
3.js中的常见加解密技术
http://www.cnblogs.com/mq0036/p/4983858.html