5

我正在研究需要 RSA 加密的东西,我有一些看起来像这样的代码:

- (NSData *)RSAEncryptData:(NSData *)data {

    NSMutableData * encrypted = [NSMutableData dataWithLength:256];

    RSA * rsa = RSA_new();
    rsa->n = BN_bin2bn(modulus.bytes, modulus.length, NULL);
    rsa->e = BN_bin2bn(exponent.bytes, exponent.length, NULL);

    RSA_public_encrypt(data.length, data.bytes, encrypted.mutableBytes, rsa, RSA_PKCS1_OAEP_PADDING);
    RSA_free(rsa);
    return encrypted;

}

其中模数和指数是NSData对象。

这工作得很好,除了所有的 RSA 方法之外,编译器还对我抱怨它们在 Mac OS 10.7 上是如何被弃用的。

有没有更现代的方式我应该这样做?我已经用谷歌搜索了几个小时,只能找到 Mac 上不可用的 iOS 内容(SecKeyEncrypt等)。

明确地说,我不是在寻找 iOS 解决方案,而是在寻找 Mac OS 解决方案。

4

3 回答 3

6

根据WWDC 2011 上的下一代加密服务演示文稿,OpenSSL 在 Mac OS X 10.7 及更高版本中已弃用,因为 OpenSSL 库的版本控制非常糟糕。

话虽如此,OpenSSL 中的 RSA 功能目前没有直接替代品。然而。您现在可能可以继续使用它们;你只需要忍受警告。或者,您可以采纳 Jon Callas 在该演示文稿中给出的建议,并为 RSA 捆绑您自己的 libcrypto 副本。

于 2012-05-28T03:08:25.170 回答
1

你已经审查过这个吗?这似乎是你问的确切问题,但是,这个问题似乎已经解决了。

于 2012-05-28T02:39:13.267 回答
0

你可以看看这个是否有帮助

https://github.com/skomik/RSAUtility

于 2014-01-17T09:48:29.737 回答