iOS 使用 RSA 加密, 只需要公钥
jopen
10年前
原文 http://www.ideawu.net/blog/archives/855.html
在 iOS 上, 加密被和安全性进行了强绑定, 所以, 你不能只做加密(至少公开文档不告诉你如何只做加密). 但事实上, 很多时候我们加密, 并不是要求 100% 的安全, 只是希望能得到加密本身所带来的安全, 既不考虑数据重放, 也不考虑第三者攻击, 也不考虑身份伪装. 我们仅仅是需要 - 加密, RSA 非对称加密. 物理上的和系统上的安全我们会想尽全部办法来解决, 不需要加密模块来管.
但是, 苹果不公开允许这样做, 所以 iOS 上的 Cocoa API 就没有简单的这样的加密函数:
ret = rsa_encrypt(src_data, public_key);
例如, 苹果的SecKeyEncrypt()函数需要 .der 证书, 而公钥只是证书的一部分. 所以, 如果你只有公钥, 你是不能直接使用这个函数的. 幸运的是, iOS 可以使用自己产生的公钥, 所以, 你要做的是把你的公钥伪装成是 iOS 产生的.
这篇文章 , 介绍了如何伪装公钥. 伪装完后, 你就可以直接使用SecKeyEncrypt()函数来进行 RSA 公钥加密了.
完整的代码 我放在 GitHub 上 了.