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 に答える