Znasz język angileski? Jeśli tak to czemu nie googlowałeś. Masa materiałów jest na necie o samym pbkdf2 jak i nawet pytań o hasło: np tu i tu. Nawet na samej wikipedi jest dosyć dobrze wyjasnione czym jest ten parametr.
PBKDF2 potrafi zahaszować Ci input (wiadomosc, haslo...) do zadanej długośći ciągu bitów. Tym jest własnie keyLength. Ilo bitowy hash chcesz otrzymać ze swojej wiadomosci.
DK = PBKDF2(PRF, Password, Salt, c, dkLen)
Z takich parametrów korzysta WPA2:
DK = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256)
Jakiej długości generować klucz? Znalazłem sporo sprzeczynch informacji na necie. Jedni twierdzą, że nie mniej niż użyta funkcja hashująca np dla SHA-256 nie mniej niz 256. Gdzie indziej twierdzą, że 128 to i tak za dużo żeby ktoś to złamał. Gdzie indziej pisza, że nigdy wiecej niż użyta funkcja hasująca.
Tutaj znalazłem kilka ciekawych zdań:
Using PBKDF2 for password storage, one should never output more bits than the base hash function's size. With PBKDF2-SHA1 this is 160 bits or 20 bytes. Output more bits doesn't make the hash more secure, but it costs the defender a lot more time while not costing the attacker. An attacker will just compare the first hash function sized output saving them the time to generate the reset of the PBKDF2 output.
Co stoi troche w sprzeczności z konfiguracją WPA2, która generuje klucze o dlugosci 256 podczas gdy sha1 generuje 160 bitów :D Z chęcią sam się dowiem czemu tak jest.
Specjalistą nie jestem. Jakieś podstawy szyfrowania znam. Ale reszta to efekty googlowania. Na moje oko ustawiłbym dlugosc klucza taka jak algorytm szyfrujący.