私は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 をcipherString
POST なしで PHP に直接入力すると、完全に機能することがわかりました。何かご意見は?