VoucyusDo a écritA vue de nez, il s'agit d'un encodage base64 (64 caractères possibles: a-z A-Z 0-9 + et /). L'intérêt d'un tel codage est de donner des nombres plus courts (6 bits par caractères, 2⁶=64) qu'en hexa (4 bits par caractères, 2⁴=16). Je suppose que sha512 produit des hash longs et difficiles à manipuler en hexa, d'où le codage en base64 pour les raccourcirs.
Généralement, le salage est effectué en concaténant le mot de passe et le sel. sha512 étant un algorithme cryptographique (les résultats semblent aléatoire au regard des données en entrée, une variation d'un seul caractère donne un hash totalement différent), il devient impossible d'utiliser une "rainbow table" (liste des hashs de tous les mots du dictionnaire et un grand nombre de combinaisons simples).
En espérant avoir répondu aux questions, n'hésite pas à préciser les points qui ne te semblent pas clairs
Hummmmmhhh....
Heureusement que c'est *pas* du base64, car base64 est réversible !
$ base64 <<< azerty
YXplcnR5Cg==
$ base64 -d <<< "YXplcnR5Cg=="
azerty
Un résumé comme sha* md5 etc, ne permet pas d’être réversible à moins d'avoir une rainbow table et pas de salt (grain de sel).
man 3 crypt
man 3 crypt a écrit ID | Method
---------------------------------------------------------
* 1 | MD5
2a | Blowfish (not in mainline glibc; added in some
| Linux distributions)
5 | SHA-256 (since glibc 2.7)
6 | SHA-512 (since glibc 2.7)