| @@ 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() |
|
| @@ 2322-2336 (lines=15) @@ | ||
| 2319 | } |
|
| 2320 | } |
|
| 2321 | ||
| 2322 | function teampass_pbkdf2_hash($var_p, $var_s, $var_c, $var_kl, $var_st = 0, $var_a = 'sha256') |
|
| 2323 | { |
|
| 2324 | $var_kb = $var_st + $var_kl; |
|
| 2325 | $var_dk = ''; |
|
| 2326 | ||
| 2327 | for ($block = 1; $block <= $var_kb; $block++) { |
|
| 2328 | $var_ib = $var_h = hash_hmac($var_a, $var_s.pack('N', $block), $var_p, true); |
|
| 2329 | for ($var_i = 1; $var_i < $var_c; $var_i++) { |
|
| 2330 | $var_ib ^= ($var_h = hash_hmac($var_a, $var_h, $var_p, true)); |
|
| 2331 | } |
|
| 2332 | $var_dk .= $var_ib; |
|
| 2333 | } |
|
| 2334 | ||
| 2335 | return substr($var_dk, $var_st, $var_kl); |
|
| 2336 | } |
|
| 2337 | ||