| @@ 61-74 (lines=14) @@ | ||
| 58 | } |
|
| 59 | ||
| 60 | //generate pbkdf2 compliant hash |
|
| 61 | function strHashPbkdf2($var_p, $var_s, $var_c, $var_kl, $var_a = 'sha256', $var_st = 0) |
|
| 62 | { |
|
| 63 | $var_kb = $var_st + $var_kl; // Key blocks to compute |
|
| 64 | $var_dk = ''; // Derived key |
|
| 65 | ||
| 66 | for ($block = 1; $block <= $var_kb; $block++) { // Create key |
|
| 67 | $var_ib = $var_h = hash_hmac($var_a, $var_s.pack('N', $block), $var_p, true); // Initial hash for this block |
|
| 68 | for ($var_i = 1; $var_i < $var_c; $var_i++) { // Perform block iterations |
|
| 69 | $var_ib ^= ($var_h = hash_hmac($var_a, $var_h, $var_p, true)); // XOR each iterate |
|
| 70 | } |
|
| 71 | $var_dk .= $var_ib; // Append iterated block |
|
| 72 | } |
|
| 73 | return substr($var_dk, $var_st, $var_kl); // Return derived key of correct length |
|
| 74 | } |
|
| 75 | ||
| 76 | /** |
|
| 77 | * stringUtf8Decode() |
|
| @@ 2301-2315 (lines=15) @@ | ||
| 2298 | } |
|
| 2299 | } |
|
| 2300 | ||
| 2301 | function teampass_pbkdf2_hash($var_p, $var_s, $var_c, $var_kl, $var_st = 0, $var_a = 'sha256') |
|
| 2302 | { |
|
| 2303 | $var_kb = $var_st + $var_kl; |
|
| 2304 | $var_dk = ''; |
|
| 2305 | ||
| 2306 | for ($block = 1; $block <= $var_kb; $block++) { |
|
| 2307 | $var_ib = $var_h = hash_hmac($var_a, $var_s.pack('N', $block), $var_p, true); |
|
| 2308 | for ($var_i = 1; $var_i < $var_c; $var_i++) { |
|
| 2309 | $var_ib ^= ($var_h = hash_hmac($var_a, $var_h, $var_p, true)); |
|
| 2310 | } |
|
| 2311 | $var_dk .= $var_ib; |
|
| 2312 | } |
|
| 2313 | ||
| 2314 | return substr($var_dk, $var_st, $var_kl); |
|
| 2315 | } |
|
| 2316 | ||