PHP (Biraz) güvenli şifreler oluşturmak için nasıl?

4 Cevap

Ben rastgele şifreler üretebilirsiniz bir fonksiyonu ile gelip çalışıyorum, o aşağıdaki gereksinimleri karşılaması gerekir:

  • 8 arasında & 14 karakter
  • Küçük harf, büyük harf, noktalama, ve sayı: Aşağıdakilerden en az birini içeren

ne fonksiyon dedi gereksinimlerini karşılayan her türlü parola üretebilirsiniz böyle bu konuda gidiş hakkında en iyi yolu olurdu?

4 Cevap

  1. Bir küçük harf, büyük harf, noktalama sembol ve sayı üretmek, böylece artık 4 karakter var.
  2. Yukarıdaki tüm set 4-10 rasgele karakterler oluşturun.
  3. Sonuç dizesi Shuffle. PHP kullanabilirsiniz str_shuffle.

Ancak, sen, rasgele karakterler üreten en az bir sayı / noktalama vb için her şifre zorlayarak eğer gerçekten daha fazla güvenli olmadığı unutulmamalıdır. Aslında, aslında şifrenizi seçimlerinizi sınırlar çünkü daha az güvenli olduğunu söyleyebiliriz.

(Kaynağı) bir "PHP Password Generator" Google birçok örnek vardır. Bunların bazıları size söz karakter sınıfları minimum gereksinimleri belirlemek için yeteneği var.

Bunların çoğu iyi rasgelelik rand() function. This has some security risks, but those may be acceptable to you. You can also replace this with the mt_rand() işlev kullanılmamalıdır.

Eğer gerçekten iyi bir rasgele kaynak elde etmek gerekiyorsa, işletim sistemi üzerinde yalın gerekir (yani /dev/random linux veya Windows Utilities nesne).

biraz tembel yaklaşım:

Generate a random number between 8 and 14
generate a completely random string of characters that is that long
Check it against a regular expression that defines the lowercase/uppercase/etc requirement If it fails, try again.

SHA1 oldukça basit olmalıdır. Bu ve sadece uzunluğunu düzeltmek için doğrayın uppercasing için rastgele almak, rastgele noktalama işaretini eklemek gibi bir şey:

sha1(microtime() . rand(0,100))

Ben muhtemelen bu daha iyi oldu şifre nesil yerde bu tür gerçekten çok akıllı bir yaklaşım gördüm işaret olmalıdır, ama nerede olduğunu hatırlamıyorum.