Это сложная проблема, потому что она либо работает, либо не очень мало подсказок.Лучший способ продолжить - начать как можно проще и собрать.
Первое, что нужно, это узнать, что именно делает код Java.В режиме CBC будет IV (значение инициализации), но ни один явно не указан в опубликованном коде Java.Вы должны выяснить, что использует код Java.Также опубликуйте полный код Java.
Из кода PaddedBufferedBlockCipher
Я предполагаю, что существует заполнение блоков, это может быть PKCS5 или PKCS7, оба с точки зрения заполнения одинаковы, для iOS эквивалент kCCOptionPKCS7Padding,Убедитесь в этом.
Убедитесь, что длина ключа одинакова, для AES параметры 128, 192 и 256 бит, если нет особых причин, используйте 128.
Код Hex.encode
кажется, подразумевает, что вывод кодируется в шестнадцатеричном формате, вам нужно сделать то же самое на iOS, это не то же самое, что Base64.
Другой основной проблемой является получение всех параметров одинаковыми с обеих сторон,Особый интерес представляют:
- значение и размер ключа шифрования
- режим: CBC, ECB и т. Д. (Вам, вероятно, следует использовать CBC)
- вектор инициализации (iv) необходим для большинства режимов
- метод заполнения: PKCS7 и т. д. (AES является блочным шифром и требует ввода, кратного размеру блока)
- Любая последующая обработка шифрования, hex или Base64кодирование.
Начните как можно проще, iv из всех 0, данные одного размера блока, без заполнения, простой ключ, без постобработки.Получите ключ, iv и тестовые данные из файла, который может быть разделен между системами, это предотвратит некоторые ошибки, такие как завершение строки c-jul и т. Д.1030 *
Также добавьте Security.framework в свой проект.
Если важна безопасность, подумайте о том, чтобы кто-нибудь с опытом в области безопасности создал код и протокол.Если безопасность не важна, просто отправьте пароль в открытом виде.
Несколько ошибок в приложении не так уж и плохи, приложение по-прежнему в основном работает, одна ошибка в безопасности и вся безопасность потеряна.
Хорошая безопасность не так проста, как можно подумать - или, как говорит моя жена: «Если бы крипто было легко, все бы это сделали», но она действительно имеет в виду правильно.