см. Мой пост здесь: PHP iOS AES Шифрование
Я только что прошел такой же проект. Я использовал библиотеку, на которую вы ссылались в «Также считается ...»
Вот пример кода для расшифровки с помощью php:
$iv2 = '';
for($i=0;$i<16;$i++){
$iv2 .= "\0";
}
$plain_text_CBC = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted_text, MCRYPT_MODE_CBC, $iv2);
var_dump($plain_text_CBC);
Убедитесь, что ваши ключи 256-битные (32 символа, у меня еще не было проблем с кодировкой, но если это так, помните, что вы шифруете байты, а не символы). Обратите внимание, что 128 в MCRYPT_RIJNDAEL_128 - это размер блока, а не размер ключа, тогда как в методе AES256DecryptWithKey 256 - это ссылка на размер ключа, а размер блока - 128. AES256DecryptWithKey работает в режиме CBC, но имеет нулевой вектор инициализации ( IV).
CBC означает, что каждый блок зависит от последнего блока, и поэтому он использует предварительно установленный, обычно случайный, «блок -1», называемый IV
ECB означает, что каждый блок шифруется одинаковым образом, следовательно, он показывает, когда два блока в одном и том же сообщении совпадают. Упомянутая библиотека не использует его, поэтому я упомянул только для контраста.
Использование нулевого iv (0000000000000000 в байтах) считается небезопасным, но оно обеспечивает некоторую дополнительную безопасность (но все же можно было бы определить, были ли первые 16 символов вашего простого текста одинаковыми каждый раз ). Чтобы это исправить, вам нужно создать переменную NSData * iv для IV и изменить аргумент CCcrypt NSData + AESCrypt.m, чтобы добавить [iv bytes] для параметра iv (я еще не тестировал этот код), и вы бы нужно сохранить этот iv и передать его php вместе с вашим сообщением. Но сначала я бы проверил, чтобы все работало с нуля. Iv.