我在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
总是一个空字符串。这是什么意思?输入数据似乎是正确的。
答案 0 :(得分:1)
由于您正在解密加密数据,您应该执行setCipherText:而不是setClearTextWithData:
此外,在不使用其返回值的情况下调用verify也没有用处。