Rastgele bir karma / dize oluşturmak için en iyi yolu nedir?

5 Cevap php

Bir oturum depolama amacıyla bir karma üreten en iyi yolu nedir? Ben hafif, taşınabilir bir çözüm arıyorum.

5 Cevap

Belki uniqid () ne ihtiyaç vardır?

uniqid — Generate a unique ID

bin2hex(mcrypt_create_iv(22, MCRYPT_DEV_URANDOM));
  1. mcrypt_create_iv size bayt rastgele bir dizisini verecektir.
  2. bin2hex bu metni ASCII dönüştürmek

Örnek çıktı:

d2c63a605ae27c13e43e26fe2c97a36c4556846dd3ef

"En iyi" göreceli bir terim olduğunu akılda çıplak. Güvenlik, teklik ve hız arasındaki yapmak için bir takası var. Eğer özellikle hassas veri ile ilgileniyor iseniz, difference between MCRYPT_DEV_URANDOM and MCRYPT_DEV_RANDOM hakkında okumak isteyebilirsiniz ama yukarıdaki örnekte, vakaların% 99 için iyidir.

Son olarak, bir RandomLib "rastgele sayılar ve çeşitli güçlü dizeleri üretmek için" vardır.

Şimdiye kadar bir değeri deriving a hash olarak aynı değildir, sen generate a random string arıyoruz farz dikkat edin. İkincisi, password_hash bakın.

Şahsen benim oturumları saklamak için rastgele benzersiz bir sayı üretmek için apache mod_unique_id kullanın. (Eğer apache kullanıyorsanız) kullanımı gerçekten çok kolay.

Seferlik http://en.wikipedia.org/wiki/Cryptographic_nonce PHP kütüphaneye bile bir bağlantı var buraya bir göz atın.

Ben genellikle elle Yüklü oturum kimlikleri yönetmek. Ive önce biraz şeyleri karıştırmak için önerilen bu satırlar boyunca bir şey gördük, ive i (Not bu değil manuel yönetimi ile autogen ile kullanım için) daha iyi ya da kötü varsayılan daha olmanın kendisine tanıklık edemem kendimi hiç kullanmadım.

//md5 "emulation" using sha1
ini_set('session.hash_function', 1);
ini_set('session.hash_bits_per_character', 5);