前端使用jsencrypt的rsa加密算法加密信息后,在openresty搭建的网关处进行密文解密遇到的坑

1、前端使用1024位的PKCS#8公钥进行加密,加密出的密文:

H4+Ff6GHcQSHprGMhu6f9CzoO/LatTQvtPUbWx1VF2Bc9XtkQWou2Tz5pXTRv3NSIwFSQDSlOP628CiTaDhNTA0NM2ybuZI0QPIR2GC7adfA/OR6Cpjau86Rdxeo7l8DnPq9tAKg+k7m8OtioJu/MG3bK8Wua+ukvXPUKhwauT4=

在网关接收到密文后,使用PKCS#8的私钥进行密文解密,但总解密是失败。
查了很多资料,找到了问题的原因,原来是URL在传输过程中会把+号换成了空格,在网关接收到的密文:

H4 Ff6GHcQSHprGMhu6f9CzoO/LatTQvtPUbWx1VF2Bc9XtkQWou2Tz5pXTRv3NSIwFSQDSlOP628CiTaDhNTA0NM2ybuZI0QPIR2GC7adfA/OR6Cpjau86Rdxeo7l8DnPq9tAKg k7m8OtioJu/MG3bK8Wua ukvXPUKhwauT4=

可以看到所有的"+"号变成了空格。

2、解决方案:
使用lua脚本将获取到的密文进行字符串的替换,将空格换成+号:

#+号处理,空格换为+
	local str = string.gsub(encrypt_msg," ","+")

encrypt_msg:网关获取的密文

3、在网关处理前端信息过程中,有可能还会遇到url转义与还原问题。如后端只处理uri的转义信息,这就需要将信息进行转义后,再传给后端。openresty中的uri转义与转义还原:
ngx.escape_uri(str) url转义
ngx.unescape_uri(str) url转义还原

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值