| @@ 63-76 (lines=14) @@ | ||
| 60 | } |
|
| 61 | ||
| 62 | //generate pbkdf2 compliant hash |
|
| 63 | function strHashPbkdf2($var_p, $var_s, $var_c, $var_kl, $var_a = 'sha256', $var_st = 0) |
|
| 64 | { |
|
| 65 | $var_kb = $var_st + $var_kl; // Key blocks to compute |
|
| 66 | $var_dk = ''; // Derived key |
|
| 67 | ||
| 68 | for ($block = 1; $block <= $var_kb; $block++) { // Create key |
|
| 69 | $var_ib = $var_h = hash_hmac($var_a, $var_s.pack('N', $block), $var_p, true); // Initial hash for this block |
|
| 70 | for ($var_i = 1; $var_i < $var_c; $var_i++) { // Perform block iterations |
|
| 71 | $var_ib ^= ($var_h = hash_hmac($var_a, $var_h, $var_p, true)); // XOR each iterate |
|
| 72 | } |
|
| 73 | $var_dk .= $var_ib; // Append iterated block |
|
| 74 | } |
|
| 75 | return substr($var_dk, $var_st, $var_kl); // Return derived key of correct length |
|
| 76 | } |
|
| 77 | ||
| 78 | /** |
|
| 79 | * stringUtf8Decode() |
|
| @@ 2696-2710 (lines=15) @@ | ||
| 2693 | } |
|
| 2694 | } |
|
| 2695 | ||
| 2696 | function teampass_pbkdf2_hash($var_p, $var_s, $var_c, $var_kl, $var_st = 0, $var_a = 'sha256') |
|
| 2697 | { |
|
| 2698 | $var_kb = $var_st + $var_kl; |
|
| 2699 | $var_dk = ''; |
|
| 2700 | ||
| 2701 | for ($block = 1; $block <= $var_kb; $block++) { |
|
| 2702 | $var_ib = $var_h = hash_hmac($var_a, $var_s.pack('N', $block), $var_p, true); |
|
| 2703 | for ($var_i = 1; $var_i < $var_c; $var_i++) { |
|
| 2704 | $var_ib ^= ($var_h = hash_hmac($var_a, $var_h, $var_p, true)); |
|
| 2705 | } |
|
| 2706 | $var_dk .= $var_ib; |
|
| 2707 | } |
|
| 2708 | ||
| 2709 | return substr($var_dk, $var_st, $var_kl); |
|
| 2710 | } |
|
| 2711 | ||