• 2015-02-03

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

    Views: 23334 | No Comments

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

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

    ret = rsa_encrypt(src_data, public_key);
    

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

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

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

    Posted by ideawu at 2015-02-03 17:49:57 Tags: ,
|<<<1>>>| 1/1 Pages, 1 Results.