2012-03-08 33 views
6

He leído la cabecera de CommonCryptor.h, y sólo puedo encontrar kCCAlgorithmAES128¿Puede iOS realmente soportar AES 256?

Pero hay algunas respuestas en la que indica que puede, por ejemplo,

AES Encryption for an NSString on the iPhone

Cualquiera puede responder?

+0

¿Hay una razón específica por la que desea utilizar AES256? Es más bajo y ofrece pocos beneficios sobre AES128. – CodesInChaos

+0

tenga en cuenta que ahora hay una constante llamada 'kCCAlgorithmAES' que tiene el mismo valor que' kCCAlgorithmAES128' – user102008

Respuesta

14

Siempre se puede usar OpenSSL en el iPhone, y que lo hace compatible con AES 256.

Dicho esto, kCCAlgorithmAES128 significa un bloque longitud de 128, no longitud de la clave. De acuerdo con this example code (se encuentra en this answer), simplemente necesita usar kCCKeySizeAES256 para el parámetro keyLength para obtener soporte para claves de 256 bits.

+0

Estoy usando exactamente el código de ejemplo que ha vinculado, pero no pude obtener el mismo valor cifrado usando openssl, p. Ej. supongamos que el texto es "manzana", y la clave es 0, p. openssl aes-256-cbc -e -a -K 0 -iv 0 -p -en apple.txt, ¿tienes alguna idea? – Howard

+0

@Howard - Hay muchas razones por las que puede que no obtenga el mismo valor. Algunos son diferencias en la configuración y otros errores directos. –

+0

La razón por la que he visto más a menudo por qué estos valores son espacios en blanco, especialmente líneas nuevas faltantes o adicionales. Asegúrese completamente de que las llaves y las sales/IV sean 100% idénticas. Verifica eso. En este caso, ¿qué quiere decir con la tecla "0"? El numero o la cadena? Supongo que el shell usará la cadena mientras estás usando el número en el código. – DarkDust

4

Recientemente descubrí una categoría de NSData (también NSString) que implementa AES en/descifrado. Tal vez esto sea útil para encriptar cualquier tipo de datos:

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

Pero parece tener un problema de implementación, lo que hace que sea incompatible con OpenSSL.

-

Otra útil como podría ser Properly encrypting with AES with CommonCrypto. Para apoyar las claves de 256 bits sólo cambia el kCCKeySizeAES128 a 256.

-

Por último, pero no menos importante esta banda de rodamiento parece prometedor: Decode OpenSSL AES256 string in iOS

+0

la respuesta más cercana que encontré es: http://stackoverflow.com/questions/3178606/encrypt-with-openssl-and-decrypt-on-iphone-with-eses-128-ecb-mode, es gracioso que nadie es capaz de obtener aes256 en el objetivo c trabajando exactamente como el openssl, la seguridad es un problema difícil de todos modos ... – Howard

Cuestiones relacionadas