RNCryptor шифрует в iOS и расшифровывает в PHP

Я пытался использовать 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 работал отлично. Есть предположения?


person berrste    schedule 08.12.2014    source источник
comment
PHP имеет нестандартное заполнение, это не PKCS#7.   -  person zaph    schedule 09.12.2014
comment
Разбейте последний оператор на два компонента, чтобы вы могли выяснить, является ли это шифрованием или кодировкой Base5, которая терпит неудачу.   -  person zaph    schedule 09.12.2014
comment
@Zaph RNCryptor != mcrypt, поэтому комментарий PKCS#7, вероятно, не применим. Обратите внимание, что существует несколько версий RNCrypt, убедитесь, что версии совпадают!   -  person Maarten Bodewes    schedule 09.12.2014
comment
Я обнаружил, что если я ввожу данные из cipherString в PHP-скрипт (без использования POST), он работает нормально, что это значит?   -  person berrste    schedule 10.12.2014


Ответы (1)


заменять

$cryptor = new \RNCryptor\Decryptor();

by

$cryptor = new \RNCryptor\RNCryptor\Decryptor;
person Arzoo    schedule 26.08.2017