Aktifkan dukungan hash berbasis blowfish untuk crypt

13

Bagaimana cara mengaktifkan dukungan crypt_blowfish untuk kata sandi dan PHP yang dibayangi di server Linux (Debian)?

Saya merujuk pada bcrypt berbasis Blowfish gaya OpenBSD , yang dikenal dalam PHP sebagai CRYPT_BLOWFISH.

Sejauh yang saya tahu tidak ada paket Debian untuk itu, opsi apa lagi yang saya miliki untuk mengaktifkan algoritma hashing ini untuk PHP?

Catatan: Antarmuka fungsi crypt ()
PHP relatif langsung dengan fungsi C-library crypt (3) yang disediakan oleh sistem operasi yang mendasarinya.

Pembaruan
penamaan paket tidak sejelas yang seharusnya (seharusnya).
Paket PEAR Crypt_Blowfish adalah pengganti drop-in untuk ekstensi MCrypt PHP, memungkinkan enkripsi blowfish dua arah yang cepat .

Juga paket Debian BCrypt juga merupakan implementasi dari dua arah algoritma blowfish 'normal'.

Yang saya cari adalah implementasi Bcrypt-hash untuk hashing passwords.

Jacco
sumber
tidak "pear install Crypt_blowfish" berfungsi?
cori
Paket pear crypt_blowfish adalah algoritma enkripsi blowfish dua arah yang 'normal'. Saya mencari algoritma hashing berbasis blowfish.
Jacco
ah, sekarang saya melihat masalahnya.
cori
Tidak tahu Anda bisa mendapatkan hadiah yang lebih tinggi untuk sebuah pertanyaan daripada perwakilan Anda saat ini. Menarik.
Copas
Rep dikurangi segera, jadi dia punya ~ 200 rep dan sekarang punya ~ 50.
ceejayoz

Jawaban:

9

Paket yang Anda perlu instal di debian adalah libpam-unix2.

Maka Anda harus mengedit file berikut di bawah /etc/pam.d/, dan mengubah semua pam_unix.sopenggunaan ke pam_unix2.so:

  • akun bersama
  • common-auth
  • kata sandi umum
  • sesi umum

Terakhir, edit common-passwordfile dan ganti parameter "md5" dengan "blowfish".

Kata sandi yang diperbarui setelah modifikasi ini dibuat akan di hash menggunakan blowfish. Kata sandi bayangan yang ada tidak dimodifikasi. Sumber

Untuk menggunakan blowfish di PHP, Anda menyediakan garam blowfish crypt(). Seperti ini:

crypt('sting', '$2a$07$' . substr('saltsaltsalt', 0, CRYPT_SALT_LENGTH) ) 

Anda harus terlebih dahulu memeriksa apakah CRYPT_BLOWFISH == 1. Dan Anda harus menggunakan garam yang cukup panjang, yang sama dengan (atau lebih besar dari) 22 karakter. Sumber

hayalci
sumber
Hmmm, setelah melakukan perubahan itu, CRYPT_BLOWFISH masih tidak sama dengan 1, untuk beberapa alasan.
Kzqai
1
Peringatan: jika versi pam_unix2 Anda tidak mendukung algoritma hashing yang saat ini digunakan untuk kata sandi pengguna, pengguna itu mungkin tidak dapat masuk. Saya pikir itulah yang saya temukan di kotak Debian saya; beberapa akun menggunakan SHA512 dan tidak bisa masuk, tetapi akun yang menggunakan MD5 bisa. Anda dapat mengatur kata sandi tersebut dari root, karena passwdtidak meminta kata sandi lama saat dijalankan dari root. Penting: biarkan sesi root Anda tetap terbuka sampai Anda yakin dapat masuk lagi!
Tom Zych