Я пытался использовать 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
прямо на PHP, без POST, он работал отлично. Какие-нибудь мысли?
замещать
$cryptor = new \RNCryptor\Decryptor();
от
$cryptor = new \RNCryptor\RNCryptor\Decryptor;
Других решений пока нет …