2012-03-20 66 views
2

我正在iPhone中開發一個應用程序,並將其連接到webService。要發送用戶的密碼,我想加密它。爲此,我創建了一對公鑰/私鑰,私鑰在服務器上解密密碼,公衆在iPhone的應用程序中加密密碼。我創建了配對:使用ios上的不可信證書加密數據

$ openssl genrsa -out private.pem 1024 
$ openssl rsa -in private.pem -out public.pem -outform PEM -pubout 

當我加密我用這個代碼來創建SecCertificateRef消息:

NSData *certData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"wspublickey" ofType:@"pem"]]; 
SecCertificateRef cert = SecCertificateCreateWithData(kCFAllocatorDefault, (__bridge CFDataRef)certData); 

該指令證書==爲零後,我通過很多時間試圖瞭解關於它的帖子(我理解非對稱密鑰的困惑,但我完全沒有經驗)。我的結論是我的證書不可信,這就是爲什麼SecCertificateCreateWithData返回nil。我的問題是我如何加密我的數據,如果我不想支付可信任的證書?對不起,我對rya公開密鑰證書的加密數據執行不瞭解,但我迷路了,我不知道該如何解決這個問題。謝謝你的幫助。帖子readed:

"untrusted server certificate" on iPhone http://omegadelta.net/2011/01/17/ios-untrusted-server-certificate/ http://lists.apple.com/archives/apple-cdsa/2009/Jun/msg00012.html

所有我想要的是使等同於命令:

$ openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl 

回答

1

最後我找到了我正在尋找的東西。我需要的CodeInChaos所說的是我的自簽名證書。用它我的代碼工作正常。要做到這一點我使用這個命令:

openssl req -x509 -out public_key.der -outform der -new -newkey rsa:1024 -keyout private_key.pem -days 3650 

我發現非常有用的這篇文章:

http://blog.iamzsx.me/show.html?id=155002

它迴應了很多問題。不是英文,但谷歌翻譯好,所以它不是一個大問題。我希望這可以幫助有同樣問題的人。

0

爲了做到這一點安全,你必須使用HTTPS或SSL/TLS。如果您不想爲證書提供5美元,則可以使用自簽名證書並強化公鑰。無需構建自己的協議,這是浪費時間。

+3

我認爲他想這樣做,但使用自簽名證書。如果您將公鑰硬編碼到應用程序中,這非常好。 – CodesInChaos 2012-03-20 17:24:16

+0

@CodeInChaos啊,是的,這可以說是更安全。 – rook 2012-03-20 17:26:38

+0

確切的,目前我沒有https服務器,我現在也無法擁有它,因此我搜索了一個保護用戶密碼的解決方案 – Jpellat 2012-03-20 17:26:51

0

問題來自文件格式。 您正在使用PEM而不是DER與iOS是二進制格式的API SecCertificateCreateWithData()