RSA 加密与Base64 +号变空格的问题

终于,RSA数据的加密和解密终于在我们的ios客户端和node js 服务器端测试成功了,中间迈过了不少的坑。其中最重要的就是base64加密后,数据传到服务器端会变成空格。如此Base64就不能被解码了,RSA解密就当然不成功。解决方法参考下面链接
http://www.360doc.com/content/11/0602/14/1542811_121186311.shtml。我们采用了第二种方法,就是讲服务器端收到的字符串进行空格的全部替换,替换成加号,如此就能很清爽的进行加密解密了。
我们在客户端用openssl库生成密钥对以及进行公钥加密,并且进行Base64编码后发送到服务器端。

在服务器端用了node-RSA库https://www.npmjs.com/package/node-rsa进行。这个库封装的比较好,用户自定义的比较多。在使用公钥私钥中,我们使用了最原始的方法,给key设置了各个参数。同时由于我们在客户端用的加密padding方式是pkcs1,而node-rsa库默认的是pkcs1_oaep,所以我们需要用key.setOptions的方法进行设置。

对于1028 bits的加密方法,117是每次加密的最大数,所以对于超长的字符串,我们需要循环对于字符串进行加密拼接,然后统一进行Base64加密,最后传到服务器端,刚开始还以为在服务器端也需要进行分段解密,然而我们发现,没有必要,调用key.decrye()函数后,这个自动就把全部的字符串解码出来了。还真是神奇。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值