Расшифровка AES в iOS: заполнение PKCS5 и CBC

Я реализую для iOS некоторый код дешифрования для сообщения, исходящего на сервере, над которым я не могу контролировать. Предыдущая реализация на другой платформе документирует требования к расшифровке AES256, определяет ключ и вектор инициализации, а также говорит:

 * Cipher Mode: CBC
 * Padding: PKCS5Padding

Параметры для создания объекта CCCryptor включают только kCCOptionPKCS7Padding и kCCOptionECBMode, отмечая, что CBC используется по умолчанию. Из того, что я понимаю о заполнении для шифрования, я не понимаю, как можно использовать оба; Я думал, что они исключают друг друга. При создании CCCryptor для дешифрования я попытался использовать как 0 для параметров, так и kCCOptionPKCS7Padding, но оба дают мне тарабарщину после дешифрования.

Я сравнил дамп этой дешифровки с дампом буфера декодированных байтов на другом платформе и подтвердили, что они действительно разные. Так что есть кое-что, что я делаю по-другому в этой реализации, что существенно отличается, я просто не знаю что ... И понятия не имею, как с этим справиться. Платформы достаточно разные, поэтому из предыдущей реализации трудно сделать какие-то выводы, поскольку она основана на совершенно другой платформе. И, конечно же, автор предыдущей реализации ушел.

Есть догадки, что еще может быть несовместимым или как устранить эту проблему?

9
задан Paul Mailman 9 February 2011 в 22:49
поделиться