Я только что прошел такой же проект.Я использовал библиотеку, на которую вы ссылались в «также считается ...»
Вот пример кода, который можно расшифровать с помощью 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 в байтах) считается небезопасным.Чтобы это исправить, вам нужно создать переменную NSData * iv для IV и изменить аргумент CCcrypt NSData + AESCrypt.m, чтобы добавить [iv bytes] для параметра iv (я еще не тестировал этот код), и вы бынужно сохранить этот iv и передать его php вместе с вашим сообщением.Но сначала я бы проверил, чтобы все работало с нуля. Iv.