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

本文分享了在iOS客户端与Node.js服务器间实现RSA加密通信的经验,解决了Base64编码后数据变为空格的问题,并介绍了客户端与服务器端的具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

终于,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()函数后,这个自动就把全部的字符串解码出来了。还真是神奇。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值