js对url进行base64加密解密
原文链接:https://dsx2016.com/?p=972
微信公众号:大师兄2016
无论是传递给后台url
地址,还是前端复制链接和分享链接.
都需要对url
进行处理,避免一些特殊符号等格式造成加载错误等
base64
url
要处理的一般包括中文,+,#等特殊字符,以及回调地址等
在这里使用的是base64
编码,使用的为github
的第三方库js-base64
参考地址:
https://github.com/dankogai/js-base64
首先要明确的是,这个base64
库可以过滤中文,但是加密结果依旧含有特殊符号,所以仍然需要单独对特殊符号进行处理.
过滤中文参考官方demo
加密
Base64.encode('dankogai'); // ZGFua29nYWk=
Base64.encode('小飼弾'); // 5bCP6aO85by+
Base64.encodeURI('小飼弾'); // 5bCP6aO85by-
解密
Base64.decode('ZGFua29nYWk='); // dankogai
Base64.decode('5bCP6aO85by+'); // 小飼弾
// note .decodeURI() is unnecessary since it accepts both flavors
Base64.decode('5bCP6aO85by-'); // 小飼弾
特殊符号
作为url
参数主要需要过滤base64
高频且影响加载的内容,核心有以下8种
把特殊符号替换为16进制
+ | 空格 | / | ? | % | & | = | # |
---|---|---|---|---|---|---|---|
%2B
|
%20
|
%2F
|
%3F
|
%25
|
%26
|
&3D
|
%23
|
进行base64
编码后,在使用js
过滤,参考代码如下
// 加密url
import { Base64 } from 'js-base64';
let urlStr=Base64.encodeURI(url)
// 过滤特殊符号
urlStr = urlStr.replace(/\+/g, "%2B");
urlStr = urlStr.replace(/\=/g, "&3D");
urlStr = urlStr.replace(/\&/g, "%26");
urlStr = urlStr.replace(/\//g, "%2F");
urlStr = urlStr.replace(/\#/g, "%%23");
urlStr = urlStr.replace(/\?/g, "%3F");
urlStr=urlStr.replace(/\s/g,"%20");
urlStr = urlStr.replace(/\%/g, "%25");
解密
使用base64
的decode
注意decode
可以解密encode
和encodeURI
两种
let url=Base64.decode(urlStr)
注意事项
使用encode
会可能产生以下乱码,建议对url
使用encodeURI
加密
浏览器报错信息如下(其是就是base64
加密解密除了问题,以及乱码)
Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded error
js对url进行base64加密解密相关推荐
- js 对 URL 参数进行 加密 解密
2019独角兽企业重金招聘Python工程师标准>>> 1.我从这个页面 ,通过以下URL跳转到另一个页面,把参数加密,下面对参数 aid=970 进行加密 var aid=9 ...
- js怎么实现对html代码加密解密,JS实现Base64加密解密
JavaScript实现Base64加密解密.Base64与其说是加密算法不如说是方便数据传输而生的数据转换手段. 测试代码:html> test .resource_enc, .resourc ...
- 在线BASE64加密解密、UrlEncode编码/解码、native/ascii在线转换工具 -toolfk程序员工具网
本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...
- JS基于编码方式实现加密解密文本
JS基于编码方式实现加密解密文本 严格来讲这是一种简单的编码方式:加密,将明文[注]转成编码.解密则是编码转码为明文本. [注:明文是指没有加密的文字(或者字符串),一般人都能看懂.] 下面源码用到 ...
- javascript base64加密解密
javascript base64加密解密 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8&q ...
- asp php base64 加密解密,base64加密解密_php base64_decode 解码方法
base64加密解密_php base64_decode 解码方法 观点1: php实现base64加密解密 在PHP中我们可以直接使用PHP自带的函数 base64_encode() 和 base6 ...
- base64 加密解密
js实现base64加密解密(适用于中文) //1.加密解密方法使用://1.加密 var str = '124中文内容'; var base = new Base64(); var result = ...
- js脚本锁计算机软件,JS使用插件cryptojs进行加密解密数据实例
本文实例讲述了JS使用插件cryptojs进行加密解密数据.分享给大家供大家参考,具体如下: Testing websockets var key = 'BOTWAVEE'; //CBC模式加密 fu ...
- chrome 控制台 base64加密解密
1.视界 2. 背景 因为在客户机器,要查询base64的解密信息,但是因为内网无法使用网络,只能拷贝软件本想查询插件,后来发现谷歌支持解密 3.方法 在chrome控制台上可以直接使用函数做base ...
最新文章
- linux虚拟机网络查看的方式
- 联通突然从4g变成3g了_中国联通最快明年底2G全面退网 并推进3G逐步退网
- 如何使用CREO来导入多个带坐标系参数的零件的装配图档
- java java se_Java SE 7、8、9 –推动Java前进
- pthread 简要使用指南
- java_IO总结(一)
- vue + element中el-table导出excel
- Mac os 10.15配置Java14和Eclipse环境
- leetcode每日一题:406.queue-reconstruction-by-height(根据升高重建队列)
- C++ vector 内存分配与回收机制
- 【备忘】加入L2范数正则化后的正规方程求解参数推导过程
- Java编程——九九乘法表
- 浅谈文字编码和Unicode(中)[转]
- uefi下添加显卡驱动
- shopex PHP Notice,SHOPEX 4.8.5 最新注入漏洞后台拿SHELL
- 高德地图API之定位API
- 大数据时代:大数据发展必备三个条件
- 熟悉FreeSWITCH 一
- 谷歌外链建设2022年如何判断和购买google优质外链
- Swift 3.0中GCD的常用方法
热门文章
- 是什么原因导致OutOfMemoryError?
- 使用pdf阅读器如何给文档添加标签
- gRPC android 监听server报错ProviderNotFoundException: No functional server found. Try adding a dependen
- MPB:扬州大学王梦芝组-​​反刍动物瘤胃原虫与细菌微循环测定方法
- 《vue使用nprogress》
- C语言 字符数据输入输出
- Java 多线程和线程同步总结
- 【PS】RGB互补色理论+色相理论
- 车辆识别——yolov5 + DeepSort_Pytorch
- 计算机二级OFFICE55小时复习攻略