2014-09-24 15 views
5

UUID benzer şekilde, ben aşırı uzunlukta benzersiz kimliklerini oluşturmak gerekir. Tipik UUID'lerden daha uzun. Benzer bir başka web uygulaması şu şekilde görünen anahtarları kullanır:PHP Bu tür bir anahtar nedir? Üzerinde çalıştığım bir web uygulamasında

cb745abbc635c03f0c259b65y5da57c06e12ef51 

Bunlara ne denir? ve PHP'de benzersiz olanları nasıl oluşturabilirim? UID yöntemini denedim, ancak bunlar çok kısa.

+2

. Sha1 (microtime (true)) 'gibi bir şey. Küresel olarak benzersiz olması gerekiyorsa, ana makine adıyla birleştirmeyi düşünün. –

+0

http://us1.php.net/manual/en/function.sha1.php <- docs bunu gibi görünüyor –

+0

@MichaelBerkowski evet,! Aynı karakter sayısı da. Eğer bir cevap olarak ister misiniz – ThatGuy343

cevap

2

Yayınladığınız örnek nedenle 40 karakter uzunluğunda onaltı dizesidir Şüpheli bir SHA1 hash gibi görünüyor. PHP yerleşik sha1() function böyle bir karma içine bir giriş dizesi karma olacaktır.

Eğer microtime(true) girdi olarak (bir float olarak mikrosaniye ile geçerli saati almak için) geçerseniz, zaman içinde benzersiz bir değer elde edersiniz. 40 karakter global benzersiz bir değer için bir hostname ile birleştirin. değerin bu tip vb bir veritabanı nesnesi için benzersiz bir tanımlayıcı, kullanıcı kimliği, muhtemelen tatmin edici iken onun dizisi kolay tahmin edilebilir olarak, bu kriptografik olarak kabul edilmemesi gerektiğini

echo sha1(microtime(true) . $hostname)); 

Not. Bir sha1 hash (40 karakter) olabilir gibi görünüyor

1
Bu yaygın olarak kullanılan sha1 üretilen karma olabilir

: sonra sha1 özeti yerine ham ikili döndürülür opsiyonel ham_çıktı DOĞRU ayarlanırsa

: PHP documentation itibaren

20 uzunluğunda biçimlendirin, aksi takdirde döndürülen değer 40 karakterlik bir onaltılık sayıdır. kesin değildir

echo (sha1("whatever")); 

Not bu size 40 karakter uzunluğunda verecek çoklu diğer karma algoritmalar var çünkü:

echo (hash("ripemd160", "whatever")); 
echo (hash("tiger160,3", "whatever")); 
echo (hash("tiger160,4", "whatever")); 
echo (hash("haval160,3", "whatever")); 
echo (hash("haval160,4", "whatever")); 
echo (hash("haval160,5", "whatever")); 
İlgili konular