Puede (ab) usarlo htpasswddesde el paquete apache-utils , siempre que tenga la versión 2.4 o superior.
htpasswd -bnBC 10 "" password | tr -d ':\n'
-btoma la contraseña del segundo argumento de comando,
-nimprime el hash en stdout en lugar de escribirlo en un archivo, le
-Bindica que use bcrypt
-C 10establece el costo de bcrypt en 10
El comando bare htpasswd sale en formato <nombre>: <hash> seguido de dos líneas nuevas. De ahí la cadena vacía para el nombre y la treliminación de los dos puntos y las nuevas líneas.
El comando genera bcrypt con $2y$prefijo, que puede ser un problema para algunos usos, pero puede ser reparado fácilmente por otro sedya que la variante de OpenBSD que usa $2a$es compatible con la variante de crypt_blowfish que usa $2y$.
htpasswd -bnBC 10 "" password | tr -d ':\n' | sed 's/$2y/$2a/'
Enlace a la página de manual de htpasswd: https://httpd.apache.org/docs/2.4/programs/htpasswd.html
Detalles sobre las variantes de bcrypt: /programming//a/36225192/6732096
Puedes usar una biblioteca de Python. En mi sistema Fedora hice:
(el sudo es solo para evitar el desperdicio de espacio para un caché dnf de usuario) y del resultado se puede ver que hay un paquete Python2 y Python3:
Instale la versión de Python2 y enumere los archivos en el paquete:
Esto muestra que hay un archivo
/usr/lib64/python2.7/site-packages/bcrypt/__init__.pypara que pueda obtener la documentación conEsto me muestra lo suficiente como para escribir el siguiente comando que picará la cadena
"password":Para versiones posteriores de
bcryptuso enrounds=lugar delog_rounds=.fuente
sudoejecutardnf search, funciona bien como usuario estándar.log_roundsparece haber cambiado pararoundshacerlopython -c 'import bcrypt; print(bcrypt.hashpw("password", bcrypt.gensalt(rounds=10)))'.Adicional a
@Disassemblerla respuesta de:ps)15es un buen equilibrio para la complejidad / velocidad de generación de contraseñaScript de envoltura para
htpasswd&bcrypt:fuente
rootusuario, es una buena idea crear un enlace simbólico/dev/null.