js解密(crypto-js)时的坑

场景:生成带参数的外部链接时,需要将参数做成加密串,前端展示链接需要将加密串解析出来,获取参数,解密方法Decrypt会遇到一个坑,加密串作为一个链接url时如果有加号+会被替换成空格,导致解析失败
链接:在这里插入图片描述

解决方法1(有坑不推荐):使用replace()用加号+替换空格还原加密串

let qstr = this.$route.query.code.replace(/\s+/g,'+');
let id = Decrypt(qstr);

此方法的坑:如果加密串有两个或以上连续的空格,只能替换回来一个加号,如下
接收到的加密串:
在这里插入图片描述
替换后的加密串(发现只有一个加号)
在这里插入图片描述
解决方法2:老老实实写循环找到空格就去替换吧

let codestr = this.$route.query.code;
let qstr = '';
for(let i=0;i<codestr.length;i++){
	if(codestr[i]==" "){
		qstr += '+';
	}else{
		qstr += codestr[i];
	}
}
let id = Decrypt(qstr);

总结:其实这个解密的坑实际是js的replace方法的坑,替换方法应该还有更好的写法,欢迎大佬留言指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值