2

私はRNCryptorを使用して iOS で文字列を暗号化し、暗号化された文字列をサーバーに投稿して、PHP で文字列を復号化しようとしました。

PHP スクリプトが空の文字列を返す最後まで、すべてが正常に機能しているように見えます (エラー メッセージは表示されません)。

問題は iOS コードにあると思います。例のdecrypt.phpで文字列を復号化しようとすると、正常に機能したからです。

iOS:

NSString *key = @"myPassword";
NSString *string = @"Secret String";
NSData *plain = [string dataUsingEncoding:NSUTF8StringEncoding];
NSData *cipherData = [RNEncryptor encryptData:plain withSettings:kRNCryptorAES256Settings password:key error:&error];
NSString *cipherString = [[NSString alloc] initWithData:[cipherData base64EncodedDataWithOptions:0] encoding:NSUTF8StringEncoding];

次に、cipherString を次の PHP スクリプトに投稿します。

PHP:

require 'autoload.php';
$password = "myPassword";
$base64Encrypted = $_POST['data'];
$cryptor = new \RNCryptor\Decryptor();
$plaintext = $cryptor->decrypt($base64Encrypted, $password);
echo $plaintext;

すべての助けに感謝します。ありがとうございました。

編集:このディスカッションから、Base64 をcipherStringPOST なしで PHP に直接入力すると、完全に機能することがわかりました。何かご意見は?

4

1 に答える 1