sha512 package:crypt-sha512

Pure Haskell implelementation for GNU SHA512 crypt algorithm crypt() is the password encryption function. It is based on the Data Encryption Standard algorithm with variations intended (among other things) to discourage use of hardware implementations of a key search. This package provides a pure Haskell implementation of SHA512 crypt scheme.
Pure Haskell implementation of SHA512 crypt method. For libc versions supporting SHA512 encryption scheme (6):
"$6$" `isPrefixOf` salt ==> crypt key salt = cryptSHA512 key salt

a snippet from glibc documentation

glibc implementations of crypt support additional encryption algorithms. If salt is a character string starting with the characters "$id$" followed by a string terminated by "$":
$id$salt$encrypted
then instead of using the DES machine, id identifies the encryption method used and this then determines how the rest of the password string is interpreted. The id value 6 corresponds to SHA-512 method (since glibc-2.17). If the salt string starts with
rounds=<N>$
where N is an unsigned decimal number the numeric value of N is used to modify the algorithm used. For example:
$6$rounds=77777$salt$encrypted
See https://www.akkadia.org/drepper/SHA-crypt.txt
Split salt-input variant of cryptSHA512. Salt is encoded.
Raw input implementation of cryptSHA512.