私はこのトピックに慣れていないので、これがばかげた質問である場合は申し訳ありません:\
特定の公開鍵でメッセージを復号化しようとしています。メッセージと公開鍵の両方が Web サービスから提供されます。
現在復号化を行う方法については、次のコードを参照してください。
for (NSValue *refVal in keyRefs) {
SecKeyRef p_key = NULL;
[refVal getValue:&p_key];
if (p_key == NULL) continue;
size_t dataLength = encryptedData.length;
size_t outPutLength = MAX(dataLength, SecKeyGetBlockSize(p_key));
void *outPutBuf = malloc(outPutLength);
if (outPutBuf) {
// Error handling
OSStatus status = SecKeyDecrypt(p_key,
kSecPaddingNone,
encryptedData.bytes,
encryptedData.length,
outPutBuf,
&outPutLength
);
NSLog(@"decryption result code: %ld (size: %lu)", status, outPutLength);
NSLog(@"FINAL decrypted text: %s", outPutBuf);
if (status == errSecSuccess) {
break;
}
} else {
//Error handling
}
}
エラーは発生しませんが、復号化された文字列は次のように表示されます (正しい出力は JSON 配列である必要があります)。
decryption result code: 0 size:511)
FINAL decrypted text: ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ
「秘密鍵」ではなく「公開鍵」で「SecKeyDecrypt」を使用しているためですか?その場合、代わりに復号化に何を使用すればよいですか?
これに関して助けてくれてありがとう!
編集:私は次のコードを使用しています: http://blog.flirble.org/2011/01/05/rsa-public-key-openssl-ios/サーバーから取得した公開鍵を使用します(これは「コード スニペットの keyRefs" が由来)