2012-05-28 11 views
5

ich Hacking um auf Sachen, die RSA-Verschlüsselung erfordert, und ich habe einige Code bekam, die wie folgt aussieht:RSA-Verschlüsselung in Objective-C (Mac)

- (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; 

} 

Wo Modul und Exponenten sind NSData Objekte.

Das funktioniert ganz gut, abgesehen von all den RSA-Methoden lassen mich die Compiler darüber jammern, wie sie auf Mac OS 10.7 veraltet sind.

Gibt es einen moderneren Weg, ich sollte das tun? Ich habe ein paar Stunden gegoogelt und konnte nur iOS-Sachen finden, die auf dem Mac nicht verfügbar sind (SecKeyEncrypt, usw.).

Um ganz klar zu sein, ich bin nicht auf der Suche nach einer iOS-Lösung, ich bin auf der Suche nach einem Mac OS.

Antwort

6

Per the Next-Generation Cryptographic Services presentation at WWDC 2011 ist OpenSSL in Mac OS X 10.7 und höher veraltet, da die Versionierung für die OpenSSL-Bibliotheken entsetzlich ist.

Das heißt, es gibt derzeit keinen direkten Ersatz für die RSA-Funktionen in OpenSSL. Noch. Sie können sie wahrscheinlich für jetzt weiter verwenden; Sie müssen nur mit den Warnungen leben. Alternativ können Sie den Rat von Jon Callas in dieser Präsentation nehmen und Ihre eigene Kopie von libcrypto für RSA bündeln.

+0

Nun, meine Base64-Methoden sind seit dem Lesen dieses Artikels geschrumpft, also ist das ein positives Ergebnis :) Es ist eine Schande, dass es für RSA keine Security-Framework-Alternative gibt. –

1

Haben Sie bereits this bewertet? Es scheint das genaue Problem zu sein, das du fragst, aber diese Fragen scheinen gelöst zu sein.

+1

Auf jeden Fall hilft, meine Vision auf Compiler ist: Sie jammern nicht, während nicht eine alternative Lösung zu präsentieren;) – Digitalis

+1

der Tat nicht genau das, was ich Ich suche nach (eine nicht-OpenSSL-Lösung wäre nett), aber es verstärkt, dass es in Ordnung ist, ältere Bibliotheken zu verwenden, um den Compiler hochzufahren. –

Verwandte Themen