Metodo di crittografia che crittograferebbe i dati alfanumerici in dati alfanumerici [chiuso]

-1

Ho bisogno di un modo efficiente (possibilmente strong come AES o AES stesso) per crittografare (solo) dati alfanumerici e ottenere solo dati alfanumerici, usando una libreria nota (non voglio e intendo implementare AES da solo).

    
posta offlinehacker 05.07.2013 - 22:11
fonte

1 risposta

3

Codifica l'input come alcuni byte, crittografalo e codifica l'output di crittografia in esadecimale , che è, per definizione , alfanumerico. Questo è abbastanza semplice da implementare e sarà disponibile su un'implementazione esistente di AES o qualunque altro sistema di crittografia tu immagini.

Ora ciò comporterà un aumento delle dimensioni, perché:

  • La crittografia richiede alcuni IV (le caratteristiche dipendono dal modalità di funzionamento con cui si utilizza AES) e che IV deve essere reso parte dell'output (quello che si converte in esadecimale) perché sarà necessario per la decrittazione.
  • A seconda della modalità di funzionamento, potrebbe essere necessario applicare alcuni padding , in modo che la lunghezza dei dati di input sia un multiplo di un certo valore.
  • La corretta crittografia simmetrica include anche una sorta di MAC , poiché la maggior parte delle situazioni in cui è richiesta la crittografia richiede anche, in pratica, una certa protezione contro gli attaccanti attivi ; e che MAC aumenterà nuovamente la lunghezza.
  • Con esadecimale, ogni byte diventa due caratteri.

Alcuni di questi elementi di crescita possono essere mitigati. Ad esempio, se la modalità di crittografia utilizzata è GCM o EAX , quindi non ci sarà bisogno di padding, la dimensione extra per la parte MAC sarà limitata (16 byte) (e una proprietà molto bella di GCM ed EAX è che loro prendersi cura del MAC in modo crittograficamente corretto, contrariamente alla maggior parte delle costruzioni fatte in casa) e l'IV deve essere solo univoco, non casuale, e quindi può essere un semplice contatore (che potrebbe essere codificato su quattro byte o giù di lì, a seconda del contesto ). Inoltre, è possibile sostituire l'esadecimale con Base64 , che implica una minore crescita (notare che Base64 base usa sia lettere minuscole che maiuscole con distinte significati, inoltre utilizza due caratteri extra-alfanumerici '+' e '/', ma una codifica Base62 che utilizza solo cifre e lettere non sarebbe difficile da progettare e implementare.

Se l'output deve avere le stesse dimensioni dell'input, le cose diventano molto più complicate. Non sarai in grado di riutilizzare una libreria esistente o addirittura AES. Questo è il regno di Formattazione della crittografia di conservazione , che è più un'area di ricerca che uno strumento pronto per la produzione, a meno che tu sei un cryptographer esperto e sai cosa stai facendo, nel qual caso tutto ciò che ho scritto sopra è stato banale (per te) e non hai bisogno di leggerlo.

    
risposta data 05.07.2013 - 22:35
fonte

Leggi altre domande sui tag