PHP'nin crypt bir blowfish tuz için doğru biçimi nedir?

1 Cevap php

Ben PHP Manual Entry for crypt() verilen bilgileri okudum, ama ben Blowfish algoritması tetiklemek için bir tuz için format kendimi hala emin bulabilirsiniz.

Manuel girişi göre, ben 16 karakter dizisinin başlangıcı olarak, '$ 2 $' veya '$ 2a $' kullanmalısınız. Modeli uygun Ben sağlamak olursa olsun dize dilimlenmiş olacağını bana gösterir '$2a$07$usesomesillystringforsalt$', ve doğranmış: Ancak, daha sonra verilen örnekte, onlar çok daha uzun bir dize kullanabilirsiniz.

Ben karşılaşmamdır sorun aslında STD_DES vs Blowfish algo tetikliyor. Örnek:

$foo = 'foo';
$salt = '$2a$' . hash('whirlpool', $foo); // 128 characters, will be truncated
$hash = crypt($foo, $salt); 
// $hash = $26HdMTpoODt6

Bu karma girdap belli değildir ve STD_DES tuz için kullanılan tuzun sadece ilk iki karakter ile aslında. Ancak, PHP Manual adlı örnekte, onların tuz '$2a$07$' ile başlar, bu yüzden aynı kod bu üç karakterleri eklerseniz ben şu olsun:

$foo = 'foo';
$salt = '$2a$' . hash('whirlpool', $foo); // 128 characters, will be truncated
$hash = crypt($foo, $salt); 
// $hash = $2a$07$b1b2ee48991281a439da2OHi1vZF8Z2zIA.8njYZKR.9iBehxLoIC

Ben 04$ ve 15$ iş hem de örneğin, burada 07$ 'olarak gösterilen karakter bazı değişimini sağlayabilir ettim, ama {[ettik (3)]} {aracılığıyla [(4)]} (boş bir dize oluşturur) işe yaramazsa, ve {[böyle 99$ ve 85$ gibi değerler dönmek için neden (7)]} tekrar.

The Question:

Ben manuel olarak inanmak kurşun olduğum gibi, Blowfish yöntemi kullanmak için crypt fonksiyonu talimat, '$2a$' dizisini izleyen bu üç karakter önemi nedir.

Kılavuzuna göre, '$2a$' crypt() Balon balığı yöntemi kullanmak için talimat için yeterli olmalıdır; ne, daha sonra, aşağıdaki üç karakter önemi nedir? Sonra, ne bu üç karakter kadar önemli ise, bir tuz için doğru biçimi nedir?

1 Cevap

Takip eden sayı, 2a gerçekleştirmek için mermi sayısının log2 belirtir. Örneğin, 10 aracı 1024 mermi yapmak. Genellikle, 10 normaldir. Çok büyük sayılar kullanmayın veya şifrenizi doğrulamak için sonsuza dek sürecektir.

Ilgili bir şey için http://stackoverflow.com/questions/2222383/why-does-bcrypt-net-generatesalt31-return-straight-away bakın. :-)