2012-03-08 5 views
6

Я прочитал заголовок CommonCryptor.h, и только я могу найти kCCAlgorithmAES128Может ли iOS поддерживать AES 256?

Но есть несколько ответа на SO о том, что может, например,

AES Encryption for an NSString on the iPhone

Любой человек может ответить?

+0

Есть ли конкретная причина, почему вы хотите использовать AES256? Он ниже и дает небольшую выгоду по сравнению с AES128. – CodesInChaos

+0

Обратите внимание, что теперь существует константа, называемая 'kCCAlgorithmAES', которая имеет то же значение, что и' kCCAlgorithmAES128' – user102008

ответ

14

Вы всегда можете использовать OpenSSL на iPhone, и что делает поддержку AES 256.

Это, как говорится, kCCAlgorithmAES128 означает блок длину 128, а не длину ключа. Согласно this example code (найдено в this answer) вам просто нужно использовать kCCKeySizeAES256 для параметра keyLength, чтобы получить поддержку 256-битных ключей.

+0

. Я использую именно код кода, который вы связали, но я не смог получить такое же зашифрованное значение, используя openssl, например. Предположим, что текст - «яблоко», а ключ - 0, например. openssl aes-256-cbc -e -a -K 0 -iv 0 -p -in apple.txt, есть ли у вас идеи? – Howard

+0

@Howard - Существует много причин, по которым вы не можете получить одинаковое значение. Некоторые из них - различия в настройках и другие ошибки. –

+0

Причина, по которой я чаще всего видел, почему это значение является пробелом, особенно отсутствующим/дополнительным символом новой строки. Убедитесь, что ключи и IV/соли на 100% идентичны. Дважды проверьте это. В этом случае, что вы имеете в виду под ключом «0»? Число или строка? Я предполагаю, что оболочка будет использовать строку, пока вы используете номер в коде. – DarkDust

4

Недавно я обнаружил категорию NSData (также NSString), которая реализует дешифрование AES. Может быть, это полезно для склепа любого типа данных:

Adding methods to NSData and NSString using categories to provide AES256 encryption on iOS

Но это, кажется, есть проблема реализации, что делает его несовместимым с OpenSSL.

-

Другой полезный, как может быть Properly encrypting with AES with CommonCrypto. Для поддержки 256 битных ключей просто изменить kCCKeySizeAES128 на 256.

-

И последнее, но не в последнюю очередь этот протектор выглядит многообещающим: Decode OpenSSL AES256 string in iOS

+0

ближайший ответ я нашел: http://stackoverflow.com/questions/3178606/encrypt-with-openssl-and-decrypt-on-iphone-with-aes-128-ecb-mode, смешно, что никто может получить aes256 на объективе c, работающем точно так же, как opensl, безопасность - это серьезная проблема. – Howard

Смежные вопросы