Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

329
Vistas
¿Cómo se crea la sal para el hash de contraseña de usuario al crear un nuevo usuario, para usar con crypt () después?

Actualmente haciendo un pequeño análisis sobre la autenticación basada en contraseña en Linux, entendí lo siguiente:

Los hashes de las contraseñas de los usuarios se almacenan en /etc/shadow, con la sal utilizada para generarlos. La identificación también proporciona el algoritmo utilizado para obtener el hash. Para verificar si una contraseña es correcta, le pasamos el id y el salt a la función crypt, generamos un hash temporal y lo comparamos con el hash registrado.

Sin embargo, cuando crea un nuevo usuario, por ejemplo, debe completar ese archivo de sombra con hash y sal. El hash, por supuesto, se obtiene llamando a la función de cripta, pero no puedo entender cómo se genera la sal al invocar esa función de cripta.

De hecho, por lo que he leído y entendido del código libc relativo a la función de cripta, no hay nada relativo a generar una sal aleatoria. Podemos proporcionar crypt con un salt aleatorio que hemos creado a mano al crear un nuevo usuario, pero casi siempre creamos usuarios sin proporcionar salts para el hash de su contraseña.

Entonces, ¿cómo se genera esa sal la primera vez al crear un usuario? ¿Se usa /dev/random?

Agradecería algún código o comandos en la respuesta.

¡Gracias!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No existe una función estándar para generar la sal, pero cada buena biblioteca debería generar una aleatoria para usted. Como está escrito en otro comentario, algunas sales deben tener un alfabeto específico como "A-Za-z0-9./" para crypt() mientras que otras aceptan datos aleatorios.

Para Java, mire el proyecto Apache Commons Codec que implementa una función compatible con Unix crypt(). Es un bucle for simple que elige caracteres aleatorios de un alfabeto dado:

http://grepcode.com/file/repo1.maven.org/maven2/commons-codec/commons-codec/1.10/org/apache/commons/codec/digest/B64.java#B64.getRandomSalt%28int%29

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda