2012-03-08 18 views
6

Ho letto l'intestazione di CommonCryptor.h, e solo io posso trovare kCCAlgorithmAES128Posso iOS supportare realmente AES 256?

Ma ci sono un paio di risposta nella SO affermando che può, ad esempio,

AES Encryption for an NSString on the iPhone

Chiunque può rispondere?

+0

C'è una ragione specifica per cui si desidera utilizzare AES256? È inferiore e offre pochi vantaggi rispetto ad AES128. – CodesInChaos

+0

nota che ora c'è una costante chiamata 'kCCAlgorithmAES' che ha lo stesso valore di' kCCAlgorithmAES128' – user102008

risposta

14

È sempre possibile utilizzare OpenSSL su iPhone, e che supporta AES 256.

Detto questo, kCCAlgorithmAES128 significa un blocco lunghezza di 128, non è la lunghezza della chiave. Secondo this example code (trovato in this answer) è sufficiente utilizzare kCCKeySizeAES256 per il parametro keyLength per ottenere il supporto per le chiavi a 256 bit.

+0

Sto usando esattamente il codice di esempio che hai collegato, ma non ero in grado di ottenere lo stesso valore cifrato usando openssl, ad es. supponiamo che il testo sia "mela" e che la chiave sia 0, ad es. openssl aes-256-cbc -e -a -K 0 -iv 0 -p -in apple.txt, hai qualche idea? – Howard

+0

@ Howard - Ci sono molti motivi per cui potresti non ottenere lo stesso valore. Alcuni sono differenze nell'impostazione e altri bug evidenti. –

+0

Il motivo per cui ho visto più spesso perché questi valori sono spazi bianchi, in particolare mancanze/nuove righe aggiuntive. Assicurati assolutamente che le chiavi e le IV/sali siano identiche al 100%. Doppio controllo. In questo caso, cosa intendi con il tasto "0"? Il numero o la stringa? Immagino che la shell userà la stringa mentre stai usando il numero nel codice. – DarkDust

4

Recentemente ho scoperto una categoria di NSData (anche NSString) che implementa l'en/decrittografia AES. Forse questo è utile per criptare qualsiasi tipo di dati:

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

Ma sembra avere un problema di implementazione, che lo rende incompatibile con OpenSSL.

-

Un altro utile come potrebbe essere Properly encrypting with AES with CommonCrypto. Per supportare 256 chiavi bit basta cambiare il kCCKeySizeAES128 a 256.

-

Ultimo ma non meno importante questo passo sembra essere molto promettente: Decode OpenSSL AES256 string in iOS

+0

la risposta più vicina che ho trovato è: http://stackoverflow.com/questions/3178606/encrypt-with-openssl-and-decrypt-on-iphone-with-aes-128-ecb-mode, è divertente che nessuno è in grado di ottenere aes256 su obiettivo c che funziona esattamente come l'openssl, la sicurezza è comunque un problema difficile .. – Howard

Problemi correlati