2013-02-23 72 views
0

我在解密Cocoa環境中的RSA公鑰時遇到了麻煩。 我已經加密哈希,與-----BEGIN PUBLIC KEY-----警衛public.pem公共密鑰(由OpenSSL的生成)在Cocoa中解密RSA公鑰

NSData *encryptedData = base64dec(license); 

NSString *publicKeyPath = [[NSBundle mainBundle] pathForResource:@"public" ofType:@"pem"]; 
NSData *publicKeyData = [NSData dataWithContentsOfFile:publicKeyPath]; 

SSCrypto *crypto = [[SSCrypto alloc] initWithPublicKey:publicKeyData]; 

[crypto setClearTextWithData:encryptedData]; 
[crypto verify]; 

NSString *verifiedKey = [crypto clearTextAsString]; 

verifiedKey始終是零。看起來像SSCrypto無法將NSData轉換爲NSString。我怎樣才能真正獲得數據解密?


結束了使用此代碼(以排除BASE64解碼步驟)

[crypto setCipherTextFromBase64String:license]; 
NSString *verifiedKey = [crypto clearTextAsString]; 

但是verifiedKey始終是一個空字符串。這是什麼意思?輸入數據似乎是正確的。

回答

1

既然你解密加密的數據,你應該做setCipherText:不是setClearTextWithData:

此外,調用驗證不使用它的返回值沒有任何意義。

+0

請看看我的更新。現在我得到空字符串,這是什麼意思? – asdf 2013-02-23 17:50:37

+1

@dig你在哪裏獲得你的base64編碼/解碼功能?我建議你使用SSCrypto中提供的base64功能,因爲放置換行符的位置(等等)可能導致SSCrypto無法解碼用其他庫編碼的數據。 – user2015453 2013-02-23 18:10:03