Un sale è un valore casuale non ripetibile crittograficamente sicuro, aggiunto alla password prima dell'hashing it, rendendo inutili le tabelle arcobaleno e rendendo impossibile l'attacco di più di una password attaccando un hash.
Un vettore di inizializzazione (IV) è un valore casuale non ripetibile crittograficamente sicuro aggiunto come stato iniziale a un algoritmo di cifratura a blocchi dipendente da modalità di funzionamento , che impedisce al cifrario di produrre lo stesso testo cifrato per blocchi simili del testo in chiaro, quindi negando all'utente malintenzionato l'opportunità di dedurre le relazioni tra segmenti del messaggio crittografato.
Sia un salt che un IV non sono informazioni segrete , infatti, nella maggior parte dei casi l'IV viene trasportato con il messaggio stesso. Implementato correttamente, un IV non dovrebbe rendere più facile "crack" la crittografia. Al contrario, dovrebbe renderlo ancora più difficile. La sicurezza del sistema di cifratura dovrebbe dipendere dalla segretezza della chiave, e solo dalla segretezza della chiave, AKA Principio di Kerckhoffs :
That the security of a cipher system should depend on the key
Oh, inoltre, non implementare la tua crittografia e usarla in un ambiente di produzione, AKA Non essere un Dave .