Pertanyaan SF sebelumnya yang saya lihat mengarah ke jawaban yang menghasilkan kata sandi hash MD5.
Adakah yang punya saran untuk menghasilkan kata sandi hash SHA-512? Saya lebih suka satu liner daripada skrip tetapi, jika skrip adalah satu-satunya solusi, itu bagus juga.
Memperbarui
Mengganti versi py2 sebelumnya dengan yang ini:
python3 -c "import crypt;print(crypt.crypt(input('clear-text pw: '), crypt.mksalt(crypt.METHOD_SHA512)))"
linux
authentication
encryption
md5
Belmin Fernandez
sumber
sumber
man 5 shadow
menyebutnya sebagai "kata sandi terenkripsi" jadi saya setuju dengan istilah itu./etc/shadow
konten Anda . Kamu akan lihat$x$salt$hash
.x
menunjukkan algoritma yang digunakan olehcrypt
, dengan6
tipikal pada linux modern, yaitu sha512 (lihatman 3 crypt
). Salah satu dari jawaban di bawah ini akan menghasilkan hash yang sama, asalkan Anda memberikan garam yang sama.Jawaban:
Inilah satu kalimat:
Python 3.3+ termasuk
mksalt
dalam crypt , yang membuatnya lebih mudah (dan lebih aman) untuk digunakan:Jika Anda tidak memberikan argumen untuk
crypt.mksalt
(bisa menerimacrypt.METHOD_CRYPT
,...MD5
,SHA256
, danSHA512
), ia akan menggunakan tersedia terkuat.ID hash (angka setelah yang pertama
$
) terkait dengan metode yang digunakan:Saya akan merekomendasikan Anda mencari apa itu garam dan semacamnya dan sebagai perberi kecil berkomentar perbedaan antara enkripsi dan hashing.
Pembaruan 1: String yang dihasilkan cocok untuk skrip shadow dan kickstart. Pembaruan 2: Peringatan. Jika Anda menggunakan Mac, lihat komentar tentang menggunakan ini dalam python di mac yang sepertinya tidak berfungsi seperti yang diharapkan.
sumber
random_salt
dengan garam acak yang sebenarnya.$6asQOJRqB1i2
- yang sepertinya tidak cukup lama untuk menjadi benar!python -c 'import crypt; print crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512))'
crypt.crypt("test", "$6$rounds=200000$random_salt")
. 200000 membutuhkan sekitar 100 ms pada laptop saya saat ini.Di Debian Anda dapat menggunakan mkpasswd untuk membuat kata sandi dengan algoritma hashing berbeda yang cocok untuk / etc / shadow. Itu sudah termasuk dalam paket whois (sesuai dengan apt-file)
untuk mendapatkan daftar tipe algoritme hashing yang tersedia:
HTH
sumber
mkpasswd
program (bagian dari harapan) di bawah Fedora juga, tetapi tidak ada gunanya untuk tujuan ini.mkpasswd
dia bicarakan adalah untuk Debian / Ubuntu. Padamkpasswd
Fedora (setidaknya hingga 14) hilang-m
saklar.dpkg -S /usr/bin/mkpasswd
saya sendiri tidak bisa percaya: Droot:$6$AbCdE$xyz:...
Anda harus menggunakan:mkpasswd -m sha-512 -S AbCdE
. Dengan kata sandi yang benar, Anda harus mendapatkan hash yang sama.Jawaban Terbaik: grub-crypt
sumber
grub-crypt
perintah, ini benar-benar cara yang paling mudah & nyaman untuk melakukannya. Tidak masuk akal bermain-main dengan garam secara manual ketika Anda bisa mengacaukannya. Masalahnya adalah semakin banyak sistem modern yang memiliki GRUB2 dan karenanya tidak akan menyertakan perintah ini.Berikut adalah kode C pendek untuk menghasilkan kata sandi SHA-512 pada berbagai OS tipe Unix.
Mengajukan:
passwd-sha512.c
untuk mengkompilasi:
pemakaian:
sumber
Solusi Perl one-liner untuk menghasilkan kata sandi hash SHA-512:
perl -le 'print crypt "desiredPassword", "\$6\$customSalt\$"'
Bekerja di RHEL 6
sumber
Mengapa tidak melakukan pemeriksaan dan modifikasi berikut untuk mesin Centos / RHEL untuk memastikan bahwa semua hashing kata sandi untuk / etc / shadow dilakukan dengan sha512. Kemudian Anda bisa mengatur passworkd Anda secara normal dengan perintah passwd
sumber
Berikut ini adalah satu-liner yang menggunakan perintah shell untuk membuat kata sandi hash SHA-512 dengan garam acak:
Catatan
sumber
whois
paket dari Fedora 18 tidak menyediakan apa-apamkpasswd
.Baca komentar di bawah untuk mempelajari implikasi keamanan dari jawaban ini
Bagi mereka yang memiliki pola pikir Ruby di sini adalah one-liner:
sumber
Skrip ini berfungsi untuk saya di Ubuntu 12.04 LTS: https://gist.github.com/JensRantil/ac691a4854a4f6cb4bd9
Ini memiliki fitur berikut yang tidak dimiliki oleh beberapa alternatif lain:
sumber
chpasswd
di sistem Anda.HASH algos adalah untuk memproduksi intisari PESAN, mereka tidak pernah cocok untuk kata sandi, yang harus menggunakan semacam HKDF ( http://tools.ietf.org/rfc/rfc5869.txt ) - lihat PBKDF2 atau BCrypt
sumber
man crypt
beri tahu saya PBKDF2 tidak didukung.Anda dapat mengkloningnya dari repo github saya jika Anda mau: https://github.com/antoncohen/mksha
sumber
Ini bukan liner satu, tetapi mungkin membantu seseorang:
sumber
random
tidak aman secara kriptografis,os.urandom
harus digunakan. 8 karakter dari 56 karakter kamus panjang juga terlalu sedikit. Mengonsentrasikan sengatan berulang-ulang dengan python adalah bentuk buruk juga (ia memiliki kompleksitas O (n ^ 2))Jelas, Anda hanya mengambil bidang ke-2, dan dapat menghapus file setelah Anda menambahkannya ke bayangan atau untuk digunakan dengan sudo (masih kemungkinan besar bayangan).
sumber
Lihatlah halaman manual untuk crypt (3) dan saya pikir Anda akan menemukan bahwa alat crypt telah diperbarui untuk menggunakan glibc dan sha256 ($ 5) dan sha512 ($ 6), beberapa putaran, garam lebih besar, dan sebagainya .
Jelas SHA512 relevan dengan cara / etc / shadow bekerja.
Yang mengatakan, halaman web ini sangat membantu - khususnya MKPASSWD, karena ini memecahkan masalah SAYA.
Mengingat kemungkinan kata sandi "hilang", saya dapat menggunakan MKPASSWD dan garam, untuk menghasilkan hash SHA512, dan mengonfirmasi / menolak daftar kata sandi kandidat.
Saya akan menggunakan John the ripper - tetapi setidaknya pada perangkat keras saya (Raspberry Pi) dan anggaran saya (tidak ada) - John tidak dapat melakukannya (sepertinya tidak mendukung hal-hal crypt / glibc yang canggih dalam versi gratis raspbian.
Pikiran Anda, karena saya memiliki cukup izin untuk membaca / menulis / etc / shadow, saya BISA hanya menimpa hash, dan melanjutkan hidup ... ini adalah latihan akademis.
CATATAN Glibc notes Versi glibc2 dari fungsi ini mendukung algoritma enkripsi tambahan.
sumber
Jika Anda membutuhkan alternatif untuk one-liner yang ditulis dengan perl / python, mkpasswd adalah pasangan yang baik. Meskipun termasuk dalam paket whois Debian, itu tidak ada pada sistem CentOS / RHEL. Saya telah memodifikasi versi Debian dari mkpasswd dan menyertakan mekanisme pembuatan garam yang lebih kuat berdasarkan OpenSSL. Biner yang dihasilkan sepenuhnya mempertahankan semua parameter baris perintah versi Debian. Kode ini tersedia pada github dan harus dikompilasi pada setiap rasa Linux: mkpasswd
sumber
Saya tidak yakin bagaimana kaitannya dengan SHA-512
/etc/shadow
. Kata sandi inicrypt
ed.Tetapi jika Anda ingin kata sandi di-hash dengan SHA-512, Anda dapat melakukannya dengan
echo -n the_password | sha512sum
. Anda tidak dapat menggunakan output untuk / etc / shadow.sumber
echo -n the_password
jadi Anda tidak hashing baris baru. </pedant>shadow
tidak crypt () ed lagi sejak tahun. Sistem modern menggunakan setidaknya md5.shadow
masihcrypt()
ed tetapi fungsinya telah diperbarui untuk mendukung beberapa algoritma yang berbeda. Apapun, metode yang dijelaskan dalam jawaban ini tidak menghasilkan hash yang cocok untuk/etc/shadow
. Algoritma lebih kompleks daripada satu putaran hash SHA-512.