Możesz (ab) używać htpasswd
z pakietu apache-utils , pod warunkiem, że masz wersję 2.4 lub wyższą.
htpasswd -bnBC 10 "" password | tr -d ':\n'
-b
bierze hasło z drugiego argumentu polecenia
-n
wypisuje skrót na standardowe wyjście zamiast zapisywać je w pliku
-B
instruuje, aby użyć bcrypt
-C 10
ustawia koszt bcrypt na 10
Polecenie gołe htpasswd wyprowadza w formacie <nazwa>: <skrót> i dwie nowe linie. Stąd pusty ciąg nazwy i tr
usuwania dwukropka i znaków nowej linii.
Komenda wypisuje bcrypt z $2y$
prefiksem, co może być problemem dla niektórych zastosowań, ale może być łatwo naprawiony przez inny, sed
ponieważ wariant OpenBSD korzystający $2a$
jest kompatybilny ze stałym wariantem crypt_blowfish $2y$
.
htpasswd -bnBC 10 "" password | tr -d ':\n' | sed 's/$2y/$2a/'
Link do strony podręcznika htpasswd: https://httpd.apache.org/docs/2.4/programs/htpasswd.html
Szczegółowe informacje na temat wariantów bcrypt: /programming//a/36225192/6732096
Możesz użyć biblioteki Python. W moim systemie Fedora:
(sudo ma po prostu uniknąć marnowania miejsca na pamięć podręczną dnf użytkownika), a na podstawie wyników widać, że jest pakiet Python2 i Python3:
Zainstaluj wersję Python2 i wyświetl listę plików w pakiecie:
To pokazuje, że jest plik,
/usr/lib64/python2.7/site-packages/bcrypt/__init__.py
dzięki czemu mogę uzyskać dokumentacjęTo pokazuje mi wystarczająco dużo, aby napisać następującą komendę, która zaszyfruje ciąg
"password"
:W przypadku późniejszych wersji
bcrypt
użyciarounds=
zamiastlog_rounds=
.źródło
sudo
uruchamiaćdnf search
, działa dobrze jako zwykły użytkownik.log_rounds
zmienił się na jegorounds
wykonaniepython -c 'import bcrypt; print(bcrypt.hashpw("password", bcrypt.gensalt(rounds=10)))'
.Dodatkowa
@Disassembler
odpowiedź:ps
)15
jest dobrą równowagą dla szybkości generowania złożoności / hasłaSkrypt opakowania dla
htpasswd
&bcrypt
:źródło
root
użytkownika dobrym pomysłem jest utworzenie dowiązania symbolicznego/dev/null
.