美文网首页
RSA双向加密坑_大坑

RSA双向加密坑_大坑

作者: white_W | 来源:发表于2019-04-07 10:47 被阅读0次

    公司最近新做了一个项目,要求RSA非对称加密。

    然后我就找了找之前的轮子,HBRSAHandler ,不知道大伙用没用过。核心就是用这个。

    很简单的两个方法,加密,解密。

    //加密

    - (NSString*) encryptWithPublicKey:(NSString*)content;

    // 解密

    - (NSString*) decryptWithPrivatecKey:(NSString*)content;

    然而,在我集成了 高德地图,然后又集成了百度的图像识别之后,居然报错,意思是高德地图里面的某个静态库文件和RSA里的openssl 里面的lib静态库重复冲突。

    这个气哦~ 

    遇到这种事情怎么办!!!

    改呗,

    然后我又准备把两个静态库合成一个静态库,但是,合成到一半进行不下去了,具体原因我也不太清楚,准备后续有时间细细研究一下,无奈时间不等人,准备Plan B。

    准备第二个办法,换库~

    因为高德地图是统一好的,而且感觉RSA的库手动导入而且没有什么技术含量,而且库小巧方便,那就换RSA 的库吧。

    然后,说时迟那时快,只听叮咚一想,RSA的三方就下载下来了。这个库就叫RSA,我下载了一个RSADemo的文件,这个要感谢群里大大们的帮助。qq:1120508748(该账号不存在),是这个小哥哥告诉我的。

    我试了试 Demo 果然好用,然后把库放到了我的项目里,whaaaaaaaaaaaaaaaat!解不出来~

    然后,还有一个小哥哥告诉我RSAEncryptor这个库也是好用的,我就又叮咚一声,下了一个Demo。

    这个在Demo里也是好用的,但是放到项目里就是解不出来,两个三方的方法名都是一样的。

    [RSAEncryptor encryptString:request_info publicKey:publicKey];

    [RSA encryptString:request_info publicKey:publicKey];

    都很方便,前面是加密的内容,后面是加密的公钥。

    这两个库只有公钥加密,私钥解密,没有用公钥解密的方法,据说是因为 iOS 端没法用公钥去解密私钥加密后的数据。这个具体我没试,不能确定真假。等有时间试过之后再更新。

    然后新生成了一对公钥私钥。

    就长这个样的两个文件。

    RSA 非对称加密是什么意思呢?

    非对称加密的核心意思就是,可以很容易的算出来两个大的质数的乘积,但是想分解一个合数的两个质数很不容易。RSA 的两个秘钥就相当于一个合数的两个质数。

    RSA 又叫非对称加密,非对称指的是加密的秘钥和解密的秘钥不同,没办法用解密的秘钥推导出加密的秘钥,也没办法用加密的秘钥推导出解密的秘钥,从而确保信息的安全性,增大了破解难度。

    简单的说就是,通信两端分别用公钥或者私钥加密,而另一端则用另一把秘钥进行解密。而秘钥的位数决定了解密的复杂度,512,1024,2048等,现在1024位以上的就很安全。

    这么解释是不是就很清晰啦~

    接下来说用法,公钥加密和私钥加密的区别是什么呢?


    公钥加密和私钥加密的用途不一样

    公钥加密:为了保证数据的“机密性”

    私钥加密:为了保证数据的“可靠性”、“完整性”和“操作不可否认性”

    这么一来,可以想一下,ios客户端的沙盒机制,基本上就保证了客户端传输数据的“可靠性”、“完整性”和“操作不可否认性”,所有ios的私钥加密基本很少见。

    而且,客户端是采集客户的信息,更多的是需要保证数据的“机密性”。


    相关文章

      网友评论

          本文标题:RSA双向加密坑_大坑

          本文链接:https://www.haomeiwen.com/subject/ebawkttx.html