Nasıl php ile bir unix parola hash oluşturabilirim

4 Cevap php

Ben, ben onların şifre bash tarihinin hiçbir yerde gösteriyor ki, php script ile parola hash edebilmek istiyorum, güvenli bir php script ile sistem kullanıcıları oluşturmak için çalışıyorum.

Ben bir dize almak ve bunu karma nasıl bu yüzden bir unix parola karma?

$UX_PW = some_function('my_password');
exec("useradd -p $UX_PW newusername");

4 Cevap

Sisteminize bağlı olarak, ya crypt() veya md5() arıyoruz.

Geleneksel olarak Unix 2-karakter tuz perturb karma önüne edilir (kümesi [a-zA-Z0-9. /] Iki rasgele karakter), ('crypt' fonksiyonu şu) DES-şifrelenmiş parolalar kullanır algoritması.

Yeni sistemler sık ​​sık rağmen MD5 kullanın.

Use crypt. Recent linux/unixes use CRYPT_MD5 or CRYPT_BLOWFISH. MD5 is the most widely supported one. DES's are for old systems.

Ayrıca ben MD5 sürümü basit bir MD5 toplamı operasyon değildir dikkat etmelisiniz, o da karmaları-precalculatable değil yapmak için bir "tuz" değerini kullanır. [[I] :) bu terimi ben uydurdum]

UNIX, Linux ve diğer UNIX benzeri POSIX işletim sistemlerinde kullanılan şifre karma çok değişir. Çoğu "passwd" yöntemleri karma bir modified DES algoritmasını (doğru değil DES) kullanan, onlar giriş için birden çok kez karma geçerli olabilir, onlar 16 veya 24 bitlik bir tuz kullanmak . Bir passwd uyumlu karma üretmek için yöntemin özel bir cevap kullanmakta olduğunuz işletim sistemine bağlıdır.

crypt() sistem çağrısı işletim sisteminize göre şifre karma yapmak için bir yol olmalıdır. Sen fonksiyon crypt() .

Hangi crypt kullanmak algoritması için, bu işletim sistemine bağlıdır.

Passwd (şifre değiştir) üzerine Ubuntu korkusuz adam sayfasında

The security of a password depends upon the strength of the encryption algorithm and the size of the key space. The UNIX System encryption method is based on the NBS DES algorithm and is very secure. The size of the key space depends upon the randomness of the password which is selected.

Ayrıca, yerine (bu başka bir yerde karma algoritması için dize ayarını tutmanızı sağlar çünkü) hash() tercih edebilir crypt kullanarak. Kodunuzu diğer ortamlar için farklı bir karma algoritma kullanmak gerekiyorsa, sadece dize değil işlevin adını değiştirmek gerekir.