Objective-C中的RSA加密(Mac)

Tom*_*ing 5 encryption macos cocoa rsa objective-c

我正在攻击需要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;

}
Run Code Online (Sandbox Code Playgroud)

模数和指数是NSData对象.

这很好用,除了所有RSA方法之外,编译器还在抱怨我们在Mac OS 10.7上如何弃用它们.

我应该采用更现代的方式吗?我已经谷歌搜索了几个小时,只能找到Mac上没有的iOS东西(SecKeyEncrypt等).

要绝对清楚,我不是在寻找iOS解决方案,我正在寻找Mac OS.

dus*_*uff 6

根据WWDC 2011上的下一代加密服务演示,OpenSSL在Mac OS X 10.7及更高版本中已被弃用,因为OpenSSL库的版本化很可怕.

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