300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 前端使用jsencrypt的rsa加密算法加密信息后 在openresty搭建的网关处进行密文解密遇到的坑

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

时间:2022-11-18 09:47:07

相关推荐

前端使用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转义还原

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。