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).
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).
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é:
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.
Leggi altre domande sui tag encryption aes