Если вы читаете man page for crypt; в частности, часть о Glibc нотах, он упоминает следующее:
The glibc2 version of this function supports additional encryption
algorithms.
If salt is a character string starting with the characters "$id$"
followed by a string terminated by "$":
$id$salt$encrypted
то вместо того, чтобы использовать машину DES, идентификатор идентифицирует шифрование используемого метода, и это определяет то, как интерпретируется остаток строки пароля . Следующие значения идентификатора поддерживаются:
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)
так что $ 5 $ $ зашифрованы соль представляет собой SHA-256 закодирован паролей и $ 6 $ $ зашифрованы соли является SHA-512 кодируется один.
Это означает, что вы должны передать строку в виде соли, содержащую строку $6$salt
, чтобы получить ее для генерации sha-512 crypt, например.
char *salt = "$6$pt4wu5ns";
char *password = "muppet show";
printf("%s\n", crypt(password, salt));
Вы уверены, что имеете в виду шифрование? Ничто, начиная с SHA, ничего не зашифровывает. Это «алгоритмы безопасного хеширования». Вы можете * хэш * с ними, возможно, даже добавить соль ... Это то, что вы имеете в виду? –
sha принадлежит целостности хэширования. нет шифрования. на самом деле, учитывая длину бита, почти невозможно найти 2 строки, разделяющих один и тот же хеш в SHA512. – HuStmpHrrr
Образец зашифрованного пароля, который вы отправили, является 'SHA-512', используя соль' $ 6 $ Ty8Ew9/O $ '. 'crypt()' вернет зашифрованный пароль без соли. – alvits