A salt es un valor no repetitivo aleatorio criptográficamente seguro, agregado a la contraseña antes de la hashing esto, inutilizando rainbow tables y haciendo imposible atacar más de una contraseña atacando un hash.
Un vector de inicialización (IV) es un valor no repetitivo aleatorio criptográficamente seguro agregado como estado inicial a un El algoritmo de cifrado de bloque depende del el modo de operación , lo que evita que el cifrado produzca el mismo texto cifrado para bloques similares del texto plano, negando al atacante la oportunidad de inferir relaciones entre segmentos del mensaje cifrado.
Tanto una sal como una IV no son información secreta , de hecho, en la mayoría de los casos, la IV se transporta con la mensaje en sí. Implementado correctamente, un IV no debería hacer que sea más fácil "descifrar" el cifrado. Por el contrario, debería hacerlo aún más difícil. La seguridad del sistema de cifrado debe depender del secreto de la clave y solo del secreto de la clave, también conocido como principio de Kerckhoffs :
Que la seguridad de un sistema de cifrado debe depender de la clave
Oh, también, no implementes tu propio cripto y utilízalo en un entorno de producción, también conocido como No seas un Dave .