it-swarm-eu.dev

Jak vytvořit hash hesla SHA512 na příkazovém řádku

V Linuxu mohu vytvořit hash SHA1 pomocí sha1pass mypassword. Existuje podobný nástroj příkazového řádku, který mi umožňuje vytvořit sha512 hashe? Stejná otázka pro Bcrypt a PBKDF2.

90
student

Ano, hledáte mkpasswd, které (alespoň na Debianu) je součástí balíčku whois. Neptej se proč ...

[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

Bohužel, moje verze alespoň nešifruje. Pokud vaše knihovna C ano, měla by (a manpage dává možnost -R nastavit sílu). -R také pracuje na sha-512, ale nejsem si jistý, jestli jeho PBKDF-2 nebo ne.

Pokud potřebujete generovat hesla bcrypt, můžete to udělat docela jednoduše pomocí Crypt::Eksblowfish::Bcrypt Perl modul.

59
derobert

Na jakýchkoli distribucích Red Hat, jako je Fedora, CentOS nebo RHEL, příkaz mkpasswd neobsahuje stejnou sadu přepínačů jako verze obvykle dodávaná s Debianem/Ubuntu.

POZNÁMKA: Příkaz mkpasswd je ve skutečnosti součástí balíčku expect a měl by se mu pravděpodobně vyhnout. Pomocí těchto příkazů můžete zjistit, k jakému balíčku patří.

$ yum whatprovides "*/mkpasswd"
-or-
$ repoquery -q --file */mkpasswd

Příklad

$ repoquery -q --file */mkpasswd
expect-0:5.43.0-8.el5.x86_64
expect-0:5.43.0-8.el5.i386

Obě tyto metody jsou lepší než použití rpm, protože balíčky nemusí být nainstalovány, aby bylo možné najít */mkpasswd.

Řešení

Chcete-li tento problém vyřešit, můžete použít následující Python nebo Perl jednořádkové pro vygenerování hesel SHA-512).

Python (> = 3,3)

$ python -c 'import crypt,getpass; print(crypt.crypt(getpass.getpass(), crypt.mksalt(crypt.METHOD_SHA512)))'

nebo skriptované-

$ python -c 'import crypt; print(crypt.crypt("somesecret", crypt.mksalt(crypt.METHOD_SHA512)))'

Python (2.x nebo 3.x)

$ python -c "import crypt, getpass, pwd; \
             print(crypt.crypt('password', '\$6\$saltsalt\$'))"

$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/

Poznámka: $ 6 $ označuje sha512. Podpora této metody specifikace algoritmu je závislá na podpoře ve funkci knihovny Crypt (3) na úrovni OS (obvykle v libcrypt). Nezávisí na verzi python).

Perl

$ Perl -e 'print crypt("password","\$6\$saltsalt\$") . "\n"'
$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/

V těchto příkladech je heslo řetězec „heslo“ a sůl je „sůl“. Oba příklady používají $ 6 $, což znamená, že chcete používat šifrování SHA-512.

75
slm

Můžete použít nástroj doveadm, který je součástí balíčku dovecot.

doveadm pw -s SHA512-CRYPT

Příklad výsledku:

{SHA512-CRYPT}$6$0JvQ1LLFESzA16.I$JVdKAIq0igudTq06BMqzT9rL1gRawMPwLr9U3/kBMKUqZdONfa0wubC89C35LKl3aE16CRH57BfGb4ygPLggL1

Stačí řezat {SHA512-CRYPT} a získáte řetězec hash SHA512.

16
obohovyk

Spusťte tento příkaz:

$ /sbin/grub-crypt --sha-512

potom zadejte slovo, které chcete hashovat.

12
ucemike

OpenSSL má

openssl passwd -6

Nápověda říká:

$ openssl passwd --help
Usage: passwd [options]
Valid options are:
...
 -6                  SHA512-based password algorithm

Pro konzistentní výstup můžete určit sůl:

openssl passwd -6 -salt <YOUR_SALT>

Výstup je něco podobného:

$6$YOUR_SALT$q/oDR4twC1ik4RoxTJJtX.3MjenHVapkMaBbq2NcRHGQjqhIWRNcEVitYZhyIx98D7lF7qs0vLTq17X0nEr8I.

s: 6 mezi „$“ označující algoritmus („-6“ výše), za kterým následuje YOUR_SALT a "$", končící částkou SHA512.

3
Markus Linnala

Chcete-li rozbalit výše uvedená řešení @ slm, pokud se obáváte, že někdo získá vaši bash historii a uvidí heslo prostého textu, můžete vložit raw_input() do python) = příkaz, kam se pole pro pole soli a hesla dostanou, takže vás o to požádá. Text není během psaní maskovaný, ale nezobrazí se ve vaší historii bash. Můžete také spustit příkaz s úvodním prostorem , ale já na to vždycky zapomenu.

python -c "import crypt, getpass, pwd; print crypt.crypt(raw_input(), '\$6\$' + raw_input() + '\$')"
3
user208145

sha512 htpasswd

Příkaz, který žádá uživatele a heslo a vygeneruje normální soubor htpasswd:

python -c 'import crypt,getpass; print(getpass.getpass("Name: ")+":"+crypt.crypt(getpass.getpass(),crypt.mksalt(crypt.METHOD_SHA512)))' >> htpasswd

Pracuje se všemi python verze> 2.5.

1
MadMike

Pokud používáte metodu Python (> = 2,7) ze simovy odpovědi a chcete potvrdit své heslo dříve, než se vygeneruje - protože hesla pro tlusté prsty ...

$ python -c 'import crypt,getpass;pw=getpass.getpass(); print(crypt.crypt(pw), crypt.mksalt(crypt.METHOD_SHA512) if (pw==getpass.getpass("Confirm: ")) else exit())'
0
levi

verze openssl „OpenSSL 1.1.1“ v systému Linux a verze openssl „LibreSSL 2.6.5“ v systému MacOS podporují md5_crypt.

Stačí spustit a zadat heslo:

openssl passwd -crypt
Password:
Verifying - Password:
<results_into_a_md5_crypt_password>

nebo zadejte heslo prostého textu přímo do CLI:

openssl password -crypt <plain_text_password_goes_here>
<results_into_a_md5_crypt_password>
0
TMT

PBKDF2

Napsal jsem jednoduchou aplikaci v Go, která umožňuje generovat hash PBKDF2, protože OpenSSL k tomu neposkytuje nástroj příkazového řádku. Podporuje sha1, sha256, sha512 a md5.

Můžete si ji sami sestavit, nebo si můžete stáhnout uvolněné binární soubory v sekci „vydání“.

https://github.com/riotkit-org/gpbkdf2

Použití je velmi jednoduché:

gpbkdf2 --passphrase=my-secret-passphrase --salt=my-secret-salt --digest-algorithm=sha512 --digest-rounds=10000 --length=128
0