Soluzione 1:
Ecco una riga:
python -c 'import crypt; print crypt.crypt("test", "$6$random_salt")'
Python 3.3+ include mksalt
in crypt, il che rende molto più facile (e più sicuro) l'utilizzo:
python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'
Se non fornisci un argomento a crypt.mksalt
(potrebbe accettare crypt.METHOD_CRYPT
, ...MD5
, SHA256
e SHA512
), utilizzerà il più forte disponibile.
L'ID dell'hash (numero dopo il primo $
) è correlato al metodo utilizzato:
- 1 -> MD5
- 2a -> Blowfish (non nella glibc principale; aggiunto in alcune distribuzioni Linux)
- 5 -> SHA-256 (a partire da glibc 2.7)
- 6 -> SHA-512 (a partire da glibc 2.7)
Ti consiglierei di cercare cosa sono i sali e cose del genere e, come da smallclamgers, commentare la differenza tra crittografia e hashing.
Aggiornamento 1:la stringa prodotta è adatta per script shadow e kickstart.
Aggiornamento 2:Avviso . Se stai usando un Mac, vedi il commento sull'utilizzo di questo in python su un Mac dove non sembra funzionare come previsto.
Su macOS non dovresti usa le versioni sopra, perché Python usa la versione del sistema di crypt()
che non si comporta allo stesso modo e utilizza la crittografia DES non sicura. Puoi utilizzare questa riga indipendente dalla piattaforma (richiede passlib – installa con pip3 install passlib
):
python3 -c 'import passlib.hash; print(passlib.hash.sha512_crypt.hash("test"))'
Soluzione 2:
Su Debian puoi usare mkpasswd per creare password con diversi algoritmi di hashing adatti a /etc/shadow. È incluso nel pacchetto whois (secondo apt-file)
mkpasswd -m sha-512
mkpasswd -m md5
per ottenere un elenco di algoritmi di hashing disponibili digitare:
mkpasswd -m help
HTH
Soluzione 3:
Migliore risposta:grub-crypt
Usage: grub-crypt [OPTION]...
Encrypt a password.
-h, --helpPrint this message and exit
-v, --version Print the version information and exit
--md5 Use MD5 to encrypt the password
--sha-256 Use SHA-256 to encrypt the password
**--sha-512 Use SHA-512 to encrypt the password (default)**
Soluzione 4:
Ecco un breve codice C per generare la password SHA-512 su vari sistemi operativi di tipo Unix.
File:passwd-sha512.c
#define _XOPEN_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
if ( argc < 3 || (int) strlen(argv[2]) > 16 ) {
printf("usage: %s password salt\n", argv[0]);
printf("--salt must not larger than 16 characters\n");
return;
}
char salt[21];
sprintf(salt, "$6$%s$", argv[2]);
printf("%s\n", crypt((char*) argv[1], (char*) salt));
return;
}
da compilare:
/usr/bin/gcc -lcrypt -o passwd-sha512 passwd-sha512.c
utilizzo:
passwd-sha512 <password> <salt (16 chars max)>
Soluzione 5:
Perl soluzione one-liner per generare password con hash SHA-512:
perl -le 'print crypt "desiredPassword", "\$6\$customSalt\$"'
Ha lavorato su RHEL 6