2015-02-03

iOS 使用 RSA 加密, 只需要公钥

Views: 23317 | Add Comments

在 iOS 上, 加密被和安全性进行了强绑定, 所以, 你不能只做加密(至少公开文档不告诉你如何只做加密). 但事实上, 很多时候我们加密, 并不是要求 100% 的安全, 只是希望能得到加密本身所带来的安全, 既不考虑数据重放, 也不考虑第三者攻击, 也不考虑身份伪装. 我们仅仅是需要 - 加密, RSA 非对称加密. 物理上的和系统上的安全我们会想尽全部办法来解决, 不需要加密模块来管.

但是, 苹果不公开允许这样做, 所以 iOS 上的 Cocoa API 就没有简单的这样的加密函数:

ret = rsa_encrypt(src_data, public_key);

例如, 苹果的 SecKeyEncrypt() 函数需要 .der 证书, 而公钥只是证书的一部分. 所以, 如果你只有公钥, 你是不能直接使用这个函数的. 幸运的是, iOS 可以使用自己产生的公钥, 所以, 你要做的是把你的公钥伪装成是 iOS 产生的.

这篇文章, 介绍了如何伪装公钥. 伪装完后, 你就可以直接使用 SecKeyEncrypt() 函数来进行 RSA 公钥加密了.

完整的代码我放在 GitHub 上了.

Related posts:

  1. iOS 滚动选择器控件 iOSScrollPicker
  2. 他们这样出题
  3. SSDB 已经迁移到 github
  4. 解决从github匿名获取只读repo错误
  5. SSDB 支持 iOS 设备使用了
Posted by ideawu at 2015-02-03 17:49:57 Tags: ,

Leave a Comment