Solución 1:
Aquí hay una sola línea:
python -c 'import crypt; print crypt.crypt("test", "$6$random_salt")'
Python 3.3+ incluye mksalt
en crypt, lo que lo hace mucho más fácil (y más seguro) de usar:
python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'
Si no proporciona un argumento a crypt.mksalt
(podría aceptar crypt.METHOD_CRYPT
, ...MD5
, SHA256
y SHA512
), utilizará el más fuerte disponible.
El ID del hash (número después del primer $
) está relacionado con el método utilizado:
- 1 -> MD5
- 2a -> Blowfish (no en la línea principal glibc; agregado en algunas distribuciones de Linux)
- 5 -> SHA-256 (desde glibc 2.7)
- 6 -> SHA-512 (desde glibc 2.7)
Le recomiendo que busque qué son las sales y demás y, según los pequeños comentarios, comente la diferencia entre el cifrado y el hashing.
Actualización 1:la cadena producida es adecuada para scripts shadow y kickstart.
Actualización 2:Advertencia . Si está usando una Mac, vea el comentario sobre cómo usar esto en python en una Mac donde no parece funcionar como se esperaba.
En macOS, no use las versiones anteriores, porque Python usa la versión del sistema de crypt()
que no se comporta igual y utiliza encriptación DES insegura. Puede usar esta plataforma independiente de una sola línea (requiere passlib – instalar con pip3 install passlib
):
python3 -c 'import passlib.hash; print(passlib.hash.sha512_crypt.hash("test"))'
Solución 2:
En Debian puedes usar mkpasswd para crear contraseñas con diferentes algoritmos hash adecuados para /etc/shadow. Está incluido en el paquete whois (según apt-file)
mkpasswd -m sha-512
mkpasswd -m md5
para obtener una lista de los algoritmos hash disponibles, escriba:
mkpasswd -m help
HTH
Solución 3:
Mejor respuesta: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)**
Solución 4:
Aquí hay un código C corto para generar la contraseña SHA-512 en varios sistemas operativos de tipo Unix.
Archivo: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;
}
para compilar:
/usr/bin/gcc -lcrypt -o passwd-sha512 passwd-sha512.c
uso:
passwd-sha512 <password> <salt (16 chars max)>
Solución 5:
Perl solución de una sola línea para generar una contraseña hash SHA-512:
perl -le 'print crypt "desiredPassword", "\$6\$customSalt\$"'
Trabajó en RHEL 6