Sie können (ab) Verwendung htpasswd
von Apache-utils - Paket, vorausgesetzt , Sie haben die Version 2.4 oder höher.
htpasswd -bnBC 10 "" password | tr -d ':\n'
-b
Nimmt man das Kennwort aus dem zweiten Befehlsargument,
-n
druckt man den Hash nach stdout, anstatt ihn in eine Datei
-B
zu schreiben. Die Anweisung, bcrypt zu verwenden,
-C 10
setzt die bcrypt- Kosten auf 10
Der Befehl bare htpasswd gibt im Format <Name>: <Hash> aus, gefolgt von zwei Zeilenumbrüchen. Daher die leere Zeichenfolge für den Namen und tr
das Entfernen des Doppelpunkts und der Zeilenumbrüche.
Der Befehl gibt bcrypt mit $2y$
Präfix aus, was für einige Anwendungen problematisch sein kann, aber von anderen leicht behoben werden kann, sed
da die OpenBSD-Variante using $2a$
mit der festen crypt_blowfish-Variante using kompatibel ist $2y$
.
htpasswd -bnBC 10 "" password | tr -d ':\n' | sed 's/$2y/$2a/'
Link zur htpasswd-Manpage: https://httpd.apache.org/docs/2.4/programs/htpasswd.html
Details zu bcrypt-Varianten: /programming//a/36225192/6732096
Sie können eine Python-Bibliothek verwenden. Auf meinem Fedora-System habe ich:
(das sudo ist nur, um Platz für einen Benutzer-dnf-Cache nicht zu verschwenden) und aus dem Ergebnis geht hervor, dass es ein Python2- und ein Python3-Paket gibt:
Installieren Sie die Python2-Version und listen Sie die Dateien im Paket auf:
Dies zeigt, dass es eine Datei gibt
/usr/lib64/python2.7/site-packages/bcrypt/__init__.py
, mit der ich die Dokumentation erhalten kannDies zeigt mir genug, um den folgenden Befehl zu schreiben, der den String hasht
"password"
:Für spätere Versionen
bcrypt
verwendenrounds=
stattlog_rounds=
.quelle
sudo
ausführendnf search
, es funktioniert gut als Standardbenutzer.log_rounds
scheint sich der Parameter geändert zurounds
habenpython -c 'import bcrypt; print(bcrypt.hashpw("password", bcrypt.gensalt(rounds=10)))'
.Ergänzend zu
@Disassembler
's Antwort:ps
).15
ist ein gutes Gleichgewicht zwischen Komplexität und Geschwindigkeit der PassworterstellungWrapper-Skript für
htpasswd
&bcrypt
:quelle
root
Benutzer eine gute Idee, eine symbolische Verknüpfung zu erstellen/dev/null
.