È necessario distinguere tra SHA512 (una funzione di hash di uso generale) e sha512crypt (una funzione di hashing della password basata su SHA512). Una stringa che inizia con $6$
è l'output di sha512crypt. È possibile che tu lo sapessi già, ma la formulazione della tua domanda lascia aperta la possibilità che tu non l'abbia fatto.
Le specifiche per sha512crypt sono qui . Non dice molto sulla costruzione del sale, solo questo:
For the SHA-based methods the SALT string can be a simple string of
which up to 16 characters are used.
Almeno una implementazione ( per python ) dice che il sale deve essere composto da alfanumerici , punto e barra (i caratteri utilizzati nella cripta unix originale basata su DES). Penso che sarebbe saggio attenersi a quei personaggi.
Il hashed-secret
è codificato in base64, non con l'alfabeto base64 MIME ma con l'alfabeto unix crypt.
The encoding used is as follows:
111111111122222222223333333333444444444455555555556666
0123456789012345678901234567890123456789012345678901234567890123
----------------------------------------------------------------
./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz