Debe distinguir entre SHA512 (una función hash de propósito general) y sha512crypt (una función de hashing de contraseña basada en SHA512). Una cadena que comienza con $6$
es la salida de sha512crypt. Es posible que ya lo supieras, pero la redacción de tu pregunta deja abierta la posibilidad de que no lo hicieras.
La especificación para sha512crypt es aquí . No dice mucho sobre la construcción de la sal, solo esto:
Para los métodos basados en SHA, la cadena SALT puede ser una cadena simple de
que se utilizan hasta 16 caracteres.
Al menos una implementación ( para python ) dice que la sal debe estar compuesta de alfanuméricos , punto y barra diagonal (los caracteres utilizados en la cripta unix basada en DES original). Creo que sería prudente atenerse a esos personajes.
El hashed-secret
está codificado en base64, no con el alfabeto MIME base64 sino con el alfabeto criptográfico de Unix.
La codificación utilizada es la siguiente:
111111111122222222223333333333444444444455555555556666
0123456789012345678901234567890123456789012345678901234567890123
----------------------------------------------------------------
./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz