Suggerimenti per un veloce doppio senso cifrare?
-
18-09-2019 - |
Domanda
Qualcuno può suggerire un algoritmo di crittografia 2 modo veloce per lunghi int?
I miei candidati sono:
- AES:. L'Advanced Encryption Standard specificato da NIST FIPS-197
- BLOWFISH:. L'algoritmo Blowfish definito da Bruce Schneier
- DES: l'algoritmo Data Encryption Standard definito da NIST FIPS-46-3 .
- DESEDE: l'algoritmo "Triple DES" definito dal NIST FIPS-46-3.
Modifica -
La velocità è più di un fattore di sicurezza. La richiesta attuale è stato quello di "offuscare" id essere passati sopra servizi Web interni così nel caso in cui un id viene mai esposto non si poteva immaginare altri ID con l'aggiunta di 1 (un argomento per le chiavi UUID oltre anela incremento automatico ??)
Soluzione
Usa AES. La velocità è stata una considerazione importante nella scelta di sostituire DESEDE. Su moderno hardware per PC, tende ad essere più veloce di Blowfish, e come standard, è più probabilità di avere il supporto hardware specializzato.
A proposito, tutte le cifre crittografare interi long-ogni flusso di byte è un intero, rappresentato in base-256.
Altri suggerimenti
Non ho bisogno di una chiave pubblica. Il requisito è per cifrare ids in un database che passano tra le macchine. Entrambe le macchine avranno il sale
Poi, XOR
?
Qual è il tuo criterio principale per la selezione? Velocità o sicurezza? Questo è il trade-off fondamentale nel settore della crittografia. Ecco una serie di risultati dei benchmark per Crypto ++ . Non ti dicono tutto, ma sarà in grado di dire che gli algoritmi sono generalmente più veloci di altri. Ecco un discutere i rapporti di forza tra alcuni algoritmi popolari . Determinare la forza è una cosa molto difficile da fare nel caso generale, anche se alcuni algoritmi sono stati prestata sufficiente attenzione che i loro punti di forza e di debolezza sono abbastanza ben noti (DES, RSA, ecc). Una regola convenzionale generale è che le chiavi più lunghe implicano maggiori punti di forza, ma devi essere molto attenti con quello. Ho il sospetto che nel tuo caso, sia AES o Blowfish andrà bene. AES sarà probabilmente un po 'più ampiamente supportato, ma in realtà - o sarebbe probabilmente fare. Stare lontano da DES a meno che la velocità è un fattore critico.
Se la sicurezza è la vostra preoccupazione principale, vorrei andare con AES.
Tuttavia, il testo cifrato può essere troppo grande per il database. Se si aggiunge IV, imbottitura, è 64 caratteri in esadecimale almeno. È possibile utilizzare l'algoritmo che ho postato qui se è stato eseguito in tale limite,
semplice crittografia simmetrica di tempo per String (e ritorno) in java