2013-02-23 128 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