El texto significa "simple" por oposición a lo que se usó en el DES basado en DES% basado en DES / a> donde la sal era un valor de 12 bits, representado exactamente como dos caracteres en un conjunto restringido. Ulrich Drepper quiere decir que su creación es menos exigente y puede tomar como sal cualquier secuencia de hasta 16 bytes.
Aunque la función de hash en sí misma puede funcionar con cualquier byte (incluidos los ceros, que no son especiales en modo alguno para una función de hash), el código C que se muestra en el texto al que se vincula utiliza una API basada en cadenas:
char *
sha256_crypt (const char *key, const char *salt)
es decir, la sal se detendrá justo antes del primer byte de valor cero, o justo después del byte 16, lo que ocurra primero. Además, el valor de la sal formará parte de la cadena de salida producida, por lo que la sal debería consistir en caracteres ASCII imprimibles y no incluir el signo crypt()
, ya que se utiliza como separador dentro de esa cadena.
Una forma sencilla de generar una "cadena de sal adecuada" para esta función es generar una secuencia de exactamente 12 bytes aleatorios (tomada de un buen PRNG, es decir, '$'
), y codificarlos con Base64 . Esto generará 16 caracteres aleatorios, en un alfabeto que contiene letras (mayúsculas y minúsculas), dígitos, /dev/urandom
y '+'
, y ninguno más, en particular sin '/'
y sin caracteres de control molestos. La sal todavía tendrá 96 bits de entropía, lo que hace que la reutilización de la sal sea considerablemente improbable (por lo que las cosas estarán bien).