0

我在 Cocoa 环境中解密 RSA 公钥时遇到了麻烦。我在 public.pem 中加密了哈希、公钥和-----BEGIN PUBLIC KEY-----警卫(由 openssl 生成)

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始终是一个空字符串。这是什么意思?输入数据似乎是正确的。

4

1 回答 1

1

由于您正在解密加密数据,因此您应该执行 setCipherText: 而不是 setClearTextWithData:

此外,调用 verify 而不使用其返回值是没有用的。

于 2013-02-23T17:31:39.063 回答