2012-06-14 12 views
6

Sto cercando di leggere da un file e crittografare i dati utilizzando AES in modalità CFB senza imbottituracrittografia AES taglia testo in modalità CFB

'AES/CFB/NoPadding'. L'IV è lungo 16 byte.

Dato che AES di default, funziona con 16 blocchi di byte, avrei pensato di utilizzare uno schema di riempimento se stavo usando CBC o qualsiasi altra modalità ma CFB. CFB essenzialmente non richiede padding per il testo in chiaro.

Quindi il problema è che se il mio file contiene dati che sono meno di 16 byte, niente viene crittografato. Se è maggiore di 16 byte, vengono crittografati solo i primi 16 byte.

Ciò indica chiaramente che la dimensione del blocco sta entrando e se c'è un underflow o un overflow di byte w.r.t. la dimensione del blocco, quindi quei dati/byte vengono scartati.

Quello che non capisco è quando si utilizza CFB, non ho bisogno di tamponare i dati .. giusto! Allora perché la dimensione di blocco predefinita di 16 byte di AES entra in azione e tronca i dati?

+1

Invia il codice che stai utilizzando per la crittografia. – Robert

risposta

4

Non è stato possibile specificare il numero di bit per il quale si desidera ottenere il feedback per quella modalità e pertanto si ottengono i 128 bit predefiniti. Sembra che tu voglia 8 bit, per i quali dovresti usare il seguente argomento per getInstance():

Cipher.getInstance("AES/CFB8/NoPadding");