Ho bisogno di crittografare una stringa sull'iPhone e inviarla a un servizio web .Net per la decrittografia. Sono in grado di crittografare/decifrare su iPhone e con. Net, ma le stringhe crittografate da iPhone non possono essere decodificate da .Net. L'errore che ricevo è "Il riempimento non è valido e non può essere rimosso."interoperabilità AES tra .Net e iPhone?
Il codice .Net è da: http://blog.realcoderscoding.com/index.php/2008/07/dot-net-encryption-simple-aes-wrapper/
Il codice iPhone utilizza il codice di esempio da: http://nootech.wordpress.com/2009/01/17/symmetric-encryption-with-the-iphone-sdk/
per quanto ne so le mie impostazioni sono identici:
result.BlockSize = 128; // iPhone: kCCBlockSizeAES128
result.KeySize = 128; // kCCBlockSizeAES128
result.Mode = CipherMode.CBC;
result.Padding = PaddingMode.PKCS7; // kCCOptionPKCS7Padding
ho provato diversi modi di generare testo cifrato. ciao/ciao è:
e0PnmbTg/3cT3W + 92CDw1Q == in Net
yrKe5Z7p7MNqx9 + CbBvNqQ == su iPhone
e "openssl enc -AES-128-CBC -nosalt -a -in hello.txt -passpass: ciao "genera: QA + Ul + r6Zmr7yHipMcHSbQ ==
Aggiornamento: I've posted the working code for this here.
Ho anche provato openSSL e non ha funzionato neanche: openssl enc -d -AES -128-cbc -a -in crypt.txt -pass pass: ciao –
Se si passa l'argomento -nosalt a openssl, si ottiene una codifica base64 di dimensioni simili. Sembrerebbe che. Net e iPhone non stiano usando un esplicito Vettore di inizializzazione (sale). Ma anche allora, openssl non può decodificare neanche. Immagino che ogni biblioteca abbia il suo sale predeterminato? – johnny
ehi capo, so che questa è una vecchia domanda, ma ho problemi nel tentativo di implementare il codice che hai caricato perché penso di avere un modo diverso di implementare la crittografia aes, io uso un IV con una lunghezza di 16. Dato che sono nuovo con obiettivi, non sono sicuro di dove si stia stabilendo questa lunghezza. – gdubs