2011-02-16 82 views
3

我必須加密一個字符串,並在我的xCode項目的資源文件夾中有一個.CER(x.509)。我花了兩天想象如何,但沒有成功,所以現在是時候提問了。iPhone加密證書

蘋果的文檔很難閱讀...我發現這個框架可能是最難理解的......這些樣本都沒有幫助。

所以,我曾嘗試用下面的代碼:顯然這是行不通的:

我的Mac上我用OPENSSL但我發現沒有辦法重新OPENSSL SDK中的命令。所以,我很困惑...任何人?

NSData *cipherData = [NSData dataWithBytes:aCipherText length:iCipherLength]; 
NSLog(@"(%d) %@", status, cipherData); 

這工作正常:

感謝很多:)

NSString *certPath = [[NSBundle mainBundle] pathForResource:@"Certificate" ofType:@"cer"]; 
    SecCertificateRef myCertificate = nil; 

    NSData *certificateData = [[NSData alloc] initWithContentsOfFile:certPath]; 
    myCertificate = SecCertificateCreateWithData(kCFAllocatorDefault, (CFDataRef)certificateData); 

    SecPolicyRef myPolicy = SecPolicyCreateBasicX509(); 
    SecTrustRef myTrust; 
    SecTrustCreateWithCertificates(myCertificate, myPolicy, &myTrust); 
    SecKeyRef publicKey = SecTrustCopyPublicKey(myTrust); 



     uint8_t *pPlainText = (uint8_t*)"This is a test"; 
     uint8_t aCipherText[1024]; 
     size_t iCipherLength = 1024; 
     OSStatus status = SecKeyEncrypt(publicKey, 
             kSecPaddingPKCS1, 
             pPlainText, 
             strlen((char*)pPlainText) + 1, 
             aCipherText, 
             &iCipherLength); 


     } 
+0

你找到任何解決這個@Fabio – Dilshan 2012-12-31 21:11:44

回答

2

我,並在最後加入兩行嘗試更新的代碼

2011-02-17 22:24:04.204 Untitled[45121:207] (0) <87a2eb07 25ab693a 7fe88329 974b6820 
843c5c33 8c5d4606 aecea682 0176e4cb 10482c9b fd2e2242 1c77d349 d3037e91 8d704783 
f2e04c82 ef273815 bdb6aa73 f8646542 243f3e12 518147ba 53636441 fd9399d3 b198ed6a 
615d51d1 4105fb75 27180f0d 09835551 5162e156 33dedf39 a87e17f8 16881990 c5e57a38 
7cd7ec63> 

現在一個不同之處在於我使用的公鑰是在我的鑰匙串中。如果你的不是,你可能想看看下面的導入一個ssl-cert-under-the-iphone-sdk鏈接。到目前爲止,我只在模擬器上測試過,它也可以不同,但​​我相信這是正確的。

如果仍有問題,請務必檢查每個調用的結果(並且如果它返回OSStatus,請檢查該結果)。哪一件失敗?


你忘記打電話SecTrustCopyPublicKey()之前調用SecTrustEvaluate()SecTrustRef。查看SecTrustCopyPublicKey()的文檔解釋了這一點。


舊的信息,這不是有用:

我相信這些帖子應該指向你在正確的方向:

http://greghaygood.com/2009/01/17/asymmetric-encryption-with-the-iphone-sdk-and-securityframework

Importing an SSL cert under the iPhone SDK

還要注意如果您已經擁有Mac的OpenSSL代碼,則可以編譯OpenSSL爲iPhone。當我開發我的構建腳本這個職位對我來說是有用的:

http://www.therareair.com/2009/01/01/tutorial-how-to-compile-openssl-for-the-iphone/

+0

謝謝:)我已經給了他們一個嘗試......它真的好幾個小時,我想閱讀一切可能。你可以(或任何人)告訴我我的代碼中缺少什麼?我認爲這一定是對的!我想只是有一個加密字符串的日誌... – Fabio 2011-02-16 17:12:44