Мне удалось успешно зашифровать и расшифровать AES-256 как в php, так и в объективном коде c. Я не буду публиковать здесь код, так как я пробовал много вариантов, и ни один не работает. Я понятия не имею, как работают эти функции шифрования ... AES - это стандартизированный алгоритм, поэтому, почему он не работает, я думаю, сводится к
а) iv
б) некоторая ошибка кодирования
или
c) различия в заполнении (не должны иметь значения для расшифровки).
Если у кого-то есть функции AES, которые работают как в php, так и в target-c, это было бы замечательно, но если нет, то любая помощь в понимании того, что вызывает эти различные результаты, была бы признательна.
Если вам нужен более узкий вопрос, он касается кодировок, iv и размера блока этого шифра AES.
1) Имеет ли значение какая кодировка используется в терминах ключа и открытого текста / зашифрованного текста? По сути, я предполагаю, что это не проблема с простым текстом, поскольку все символы, которые я бы использовал (по крайней мере, во время тестирования), являются стандартными символами ASCII. Но допустим, что строки php являются ASCII, и я использую UTF8 в target-c ... Я не знаю достаточно, чтобы сказать, использует ли php ASCII или байты, т.е. ключ будет отличаться между ними.
2) Насколько мне известно, в режиме ECB не используется iv (исправить, если не так). Режим CBC использует iv. В этом случае iv должен быть записан вместе с текстом шифра. Теперь этот ключ имеет длину 16 или 32 символа в php (в зависимости от размера блока 128 против 256). Это значит 16 или 32 байта? И будет ли строка 1234567890123456789012 одинаковой в ASCII и UTF8 при преобразовании в байты?
3) В чем разница между размером блока и размером ключа в терминах алогрифа? (снова поправьте, если ошиблись) В основном это все один и тот же алгоритм, просто разные параметры? И использование 256-битного ключа против 128-битного ключа - это вопрос только того, какой ключ передан
(Также обратите внимание, что я использовал кодировку base64 для передачи строк между приложениями для тестирования)
Спасибо,
Илия