El tutorial o código que hallarás en este post es la solución más sencilla y efectiva que encontramos a tu duda o problema.
Solución:
En cualquiera de las distribuciones de Red Hat, como Fedora, CentOS o RHEL, el comando mkpasswd
no incluye el mismo conjunto de opciones que la versión que normalmente se incluye con Debian/Ubuntu.
NOTA: El comando mkpasswd
en realidad es parte del expect
paquete, y probablemente debería evitarse. Puede averiguar a qué paquete pertenece con cualquiera de estos comandos.
$ yum whatprovides "*/mkpasswd"
-or-
$ repoquery -q --file */mkpasswd
Ejemplo
$ repoquery -q --file */mkpasswd
expect-0:5.43.0-8.el5.x86_64
expect-0:5.43.0-8.el5.i386
Ambos métodos son superiores al uso rpm
ya que los paquetes no tienen que estar instalados para ubicar */mkpasswd
.
Soluciones alternativas
Para evitar esto, puede usar las siguientes frases de Python o Perl para generar contraseñas SHA-512. Tenga en cuenta que estos son salados:
Pitón (>= 3.3)
$ python -c 'import crypt,getpass; print(crypt.crypt(getpass.getpass(), crypt.mksalt(crypt.METHOD_SHA512)))'
-o con guión-
$ python -c 'import crypt; print(crypt.crypt("somesecret", crypt.mksalt(crypt.METHOD_SHA512)))'
Python (2.x o 3.x)
$ python -c "import crypt, getpass, pwd;
print(crypt.crypt('password', '$6$saltsalt$'))"
$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/
Nota: $6$ designa a sha512. La compatibilidad con este método de especificación del algoritmo depende de la compatibilidad con la función de biblioteca crypt(3) del nivel del sistema operativo (generalmente en libcrypt). No depende de la versión de Python.
Perl
$ perl -e 'print crypt("password","$6$saltsalt$") . "n"'
$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/
En estos ejemplos la contraseña es la string “contraseña” y la sal es “salsal”. Ambos ejemplos están usando $6$ lo que indica que desea que crypt use SHA-512.
Sí, estás buscando mkpasswd
, que (al menos en Debian) es parte de la whois
paquete. No preguntes por qué…
[email protected]:~$ mkpasswd -m help
Available methods:
des standard 56 bit DES-based crypt(3)
md5 MD5
sha-256 SHA-256
sha-512 SHA-512
Desafortunadamente, mi versión al menos no hace bcrypt. Si su biblioteca C lo hace, debería (y la página de manual ofrece una opción -R para establecer la fuerza). -R también funciona en sha-512, pero no estoy seguro si es PBKDF-2 o no.
Si necesita generar contraseñas bcrypt, puede hacerlo de manera bastante simple con el Crypt::Eksblowfish::Bcrypt
Módulo Perl.
Puedes usar el doveadm
utilidad, que está incluida en el dovecot
paquete.
doveadm pw -s SHA512-CRYPT
Ejemplo de resultado:
SHA512-CRYPT$6$0JvQ1LLFESzA16.I$JVdKAIq0igudTq06BMqzT9rL1gRawMPwLr9U3/kBMKUqZdONfa0wubC89C35LKl3aE16CRH57BfGb4ygPLggL1
solo corta SHA512-CRIPTA y obtendrás tu SHA512 hash string.
Si para ti ha sido de ayuda este post, nos gustaría que lo compartas con más desarrolladores así contrubuyes a extender nuestra información.