SHA512 şifre karmaları komut satırında nasıl oluşturulur


83

Linux'ta kullanarak karma bir SHA1 şifre oluşturabilirsiniz sha1pass mypassword. Bana sha512karma oluşturmamı sağlayan benzer bir komut satırı aracı var mı? İçin aynı soru Bcryptve PBKDF2.


Şunu yapmayın sha1sum?

1
@Tichodroma hayır, aslında sha1passDebian'daki syslinux ortak paketinin bir parçası olan bir komut var .
derobert

2
sha512sumCoreutils'in bir parçası olan ve benzer şekilde bir komut var openssl sha512- fakat hiçbir şey sha1passyapmıyor.
Keith Thompson

Yanıtlar:


55

Evet, arıyorsunuz mkpasswd(en azından Debian'da) whoispaketin bir parçası . Neden diye sorma ...

anthony@Zia:~$ mkpasswd -m help
Available methods:
des     standard 56 bit DES-based crypt(3)
md5     MD5
sha-256 SHA-256
sha-512 SHA-512

Ne yazık ki, sürümüm en azından bcrypt yapmıyor. C kitaplığınız varsa, (ve manpage gücünü ayarlamak için -R seçeneği verir) gerekir. -R ayrıca sha-512'de de çalışır, ancak PBKDF-2 olup olmadığından emin değilim.

Eğer bcrypt şifreleri oluşturmanız gerekiyorsa, Crypt::Eksblowfish::BcryptPerl modülüyle oldukça basit bir şekilde yapabilirsiniz .


70

Fedora, CentOS veya RHEL gibi Red Hat dağıtımlarından herhangi birinde komut mkpasswd, genellikle Debian / Ubuntu ile birlikte verilen sürümle aynı anahtarları içermez.

NOT: Komut mkpasswdaslında expectpaketin bir parçasıdır ve muhtemelen kaçınılması gerekir. Bu komutlardan herhangi birinde hangi pakete ait olduğunu öğrenebilirsiniz.

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

Örnek

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

Bu yöntemlerin her ikisi de kullanmak için üstündür rpmçünkü paketlerin konumlandırılması gerekmez */mkpasswd.

Geçici Çözümler

Bu soruna geçici bir çözüm bulmak için, SHA-512 parolaları oluşturmak için aşağıdaki Python veya Perl tek gömleklerini kullanabilirsiniz. Bunların tuzlu olduğuna dikkat edin:

Python (> = 3.3)

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

-ya da komut dosyası-

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

Python (2.x veya 3.x)

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

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

Not: 6 $ $ sha512'yi belirtir. Bu algoritmayı belirleme yönteminin desteği, işletim sistemi düzeyinde kript (3) kütüphane işlevindeki (genellikle libcrypt) desteğe bağlıdır. Python versiyonuna bağlı değildir.

Perl

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

Bu örneklerde, şifre "şifre" ve tuz "tuzlar" dır. Her iki örnek de , şifreyi SHA-512 kullanmak istediğinizi belirten 6 $ $ kullanıyor .


2
Python one-liner için, crypt.mksalt(crypt.METHOD_SHA512)sabit bir tane kullanmak yerine tuzu üretmek için kullanabilirsiniz .
Jake Cobb

2
@JakeCobb crypt.mksaltsadece Python 3.x'te bulunmaktadır
Riccardo Murri

2
Komut satırına açık metinli bir parola yazmadan önce, HISTCONTROL'de ayarlanmış bir "ignorepace" olduğundan emin olun (yani bunu önce CentOS / RHEL: echo 'export HISTCONTROL = "ignoredups: ignorespace"'> /etc/profile.d adresinde yapın. /histcontrol.sh && kaynağı /etc/profile.d/histcontrol.sh). Aksi takdirde, ~ / .bash_history 'nize kaydedilir.
Patrick

3
perl (ve muhtemelen python) "crypt" sistem işlevini kullanır. Bu nedenle taşınabilir değillerdir, istenen karma türünü anlayan bir şifre işlevi gerektirirler. OSX şifreli değil - sadece eski stil DES şifreli bir dize geri verir.
Dan Pritts,

1
@RiccardoMurri Python 2.7.5'e ve crypt.mksaltCentOS 7.1'e
erişime sahibim

15

Pakette bulunan doveadmyardımcı programı kullanabilirsiniz dovecot.

doveadm pw -s SHA512-CRYPT

Sonuç örneği:

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

Sadece {SHA512-CRYPT} kesip SHA512 karma dizginizi alacaksınız.


Düzenli bir kullanıcı olarak benim için çalışmıyor:doveadm(jotik): Fatal: Error reading configuration: stat(/etc/dovecot/dovecot.conf) failed: Permission denied (euid=1000(jotik) egid=100(users) missing +x perm: /etc/dovecot, we're not in group 97(dovecot), dir owned by 0:97 mode=0750)
jotik

12

Bu komutu çalıştırın:

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

sonra istediğiniz kelimeyi girin.


-bash: / sbin / grub-crypt: Böyle bir dosya veya dizin yok
Will Sheppard

Grubun c7'de olduğuna inanmıyorum, böylece kullanabilirsiniz: python -c 'import crypt, getpass; print (crypt.crypt (getpass.getpass (), crypt.mksalt (crypt.METHOD_SHA512))) '
ucemike

3

@ Slm'nin yukarıdaki geçici çözümlerini genişletmek için, birinin bash geçmişinizi tutması ve düz metin şifresini görmesinden endişe duyuyorsanız raw_input(), tuz ve şifre alanlarının girdiği yer olan python ifadesine girerek sizden isteyin. Metin yazarken maskelenmez, ancak bash tarihinizde görünmez. Komuta ayrıca bir boşluk ile başlayabilirsiniz, ama bunu yapmayı her zaman unuturum.

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

2
Ayrıca yapılandırabilirsiniz bashbir boşluk ekleyerek öneki komutları kaydetmez için HISTCONTROL=ignorespacesizin için .bashrcdosyanın. Bir komutu çalıştırdığınızda, geçmişinizden dışlamak istediğinizde, sadece gerçek komuttan sonra bir boşluk yazın.
theillien

1

sha512 htpasswd

Kullanıcı ve şifre soran ve düzenli bir htpasswd dosyası oluşturan komut:

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

Tüm python sürümleriyle çalışır> 2.5.


1

OpenSSL var

openssl passwd -6

Yardım diyor ki:

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

0

Sim'in cevabından Python (> = 2.7) metodunu kullanıyorsanız ve şifrenizi oluşturmadan önce onaylamak istiyorsanız - çünkü parmak şifreleriniz ...

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

Bu cevabın 29 Kasım 2017 versiyonunda, bunun python 2.7 (veya daha yenisi) için geçerli olduğunu söylüyor. Python2.7'nin şifreli modülünde mksalt () yoktur. Ayrıca crypt.mksalt () çağrısını crypt.crypt () (yanlış yerleştirilen yakın paren?) 2. arg olarak çağırmak istediğinizi düşünüyorum.
Juan

0

Linux'ta "OpenSSL 1.1.1" openssl sürümü ve MacOS'ta "libreSSL 2.6.5" openssl versiyonu md5_crypt desteği.

Sadece çalıştırın ve şifrenizi girin:

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

veya düz metin şifresini doğrudan CLI'ye verin:

openssl password -crypt <plain_text_password_goes_here>
<results_into_a_md5_crypt_password>

-12

Kullanabilirsiniz sha512sum:

echo "password" | sha512sum

24
Bu cevap yanlış. Komut geçerli bir SHA-512 şifre karma oluşturmayacak. Basitçe \ n string şifresinin sağlama toplamını hesaplar (sonunda bir de yeni bir satır olduğunu unutmayın). Unix şifre karma tuzlu ve iki "$" sembolü arasında karma sürüm kodu içerir. Cevapla @slm.
zorlem

Daha spesifik olarak, sorun, parola biraz karışık olsa da, bu yöntemin en.wikipedia.org/wiki/Rainbow_table saldırısına karşı savunmasız olmasıdır .
DepressedDaniel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.