Я реализую для iOS некоторый код дешифрования для сообщения, исходящего на сервере, над которым я не могу контролировать. Предыдущая реализация на другой платформе документирует требования к расшифровке AES256, определяет ключ и вектор инициализации, а также говорит:
* Cipher Mode: CBC
* Padding: PKCS5Padding
Параметры для создания объекта CCCryptor включают только kCCOptionPKCS7Padding и kCCOptionECBMode, отмечая, что CBC используется по умолчанию. Из того, что я понимаю о заполнении для шифрования, я не понимаю, как можно использовать оба; Я думал, что они исключают друг друга. При создании CCCryptor для дешифрования я попытался использовать как 0 для параметров, так и kCCOptionPKCS7Padding, но оба дают мне тарабарщину после дешифрования.
Я сравнил дамп этой дешифровки с дампом буфера декодированных байтов на другом платформе и подтвердили, что они действительно разные. Так что есть кое-что, что я делаю по-другому в этой реализации, что существенно отличается, я просто не знаю что ... И понятия не имею, как с этим справиться. Платформы достаточно разные, поэтому из предыдущей реализации трудно сделать какие-то выводы, поскольку она основана на совершенно другой платформе. И, конечно же, автор предыдущей реализации ушел.
Есть догадки, что еще может быть несовместимым или как устранить эту проблему?