2012-10-07 183 views
1

什麼是PBKDF2PBKDF2密鑰長度

的$ key_length它說,它將從輸入中得到,但我看到使用的256和更大的key_lengths的人,但是當我輸入256作爲key_length輸出512個字符。這是故意的嗎?我可以安全地使用64作爲key_length,因此輸出長度爲128個字符?

回答

3

$ key_length是您希望從PBKDF2獲得的輸出字節數。 (請注意,如果key_length大於散列算法的輸出字節數,則會重複該過程兩次,這樣散列速度可能會超出您的期望值,例如,SHA256會提供32個字節的輸出,因此要求輸入33個字節大約需要32倍的長度。)

您提到的長度加倍是因爲代碼將輸出字節轉換爲十六進制(即每個字節2個字符),除非指定$ raw_output = true。測試向量包括指定$ raw_output = false,因爲十六進制更容易處理並在線發佈。根據您在應用程序中存儲數據的方式,您可以決定是將結果存儲爲十六進制,base64還是僅存儲原始二進制數據。