Puede (ab) usarlo htpasswd
desde el paquete apache-utils , siempre que tenga la versión 2.4 o superior.
htpasswd -bnBC 10 "" password | tr -d ':\n'
-b
toma la contraseña del segundo argumento de comando,
-n
imprime el hash en stdout en lugar de escribirlo en un archivo, le
-B
indica que use bcrypt
-C 10
establece 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 tr
eliminació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 sed
ya 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__.py
para 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
bcrypt
uso enrounds=
lugar delog_rounds=
.fuente
sudo
ejecutardnf search
, funciona bien como usuario estándar.log_rounds
parece haber cambiado pararounds
hacerlopython -c 'import bcrypt; print(bcrypt.hashpw("password", bcrypt.gensalt(rounds=10)))'
.Adicional a
@Disassembler
la respuesta de:ps
)15
es un buen equilibrio para la complejidad / velocidad de generación de contraseñaScript de envoltura para
htpasswd
&bcrypt
:fuente
root
usuario, es una buena idea crear un enlace simbólico/dev/null
.