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

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

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

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

经验分享 程序员 微信小程序 职场和发展