| @@ 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() |
|
| @@ 2171-2185 (lines=15) @@ | ||
| 2168 | } |
|
| 2169 | } |
|
| 2170 | ||
| 2171 | function teampass_pbkdf2_hash($var_p, $var_s, $var_c, $var_kl, $var_st = 0, $var_a = 'sha256') |
|
| 2172 | { |
|
| 2173 | $var_kb = $var_st + $var_kl; |
|
| 2174 | $var_dk = ''; |
|
| 2175 | ||
| 2176 | for ($block = 1; $block <= $var_kb; $block++) { |
|
| 2177 | $var_ib = $var_h = hash_hmac($var_a, $var_s.pack('N', $block), $var_p, true); |
|
| 2178 | for ($var_i = 1; $var_i < $var_c; $var_i++) { |
|
| 2179 | $var_ib ^= ($var_h = hash_hmac($var_a, $var_h, $var_p, true)); |
|
| 2180 | } |
|
| 2181 | $var_dk .= $var_ib; |
|
| 2182 | } |
|
| 2183 | ||
| 2184 | return substr($var_dk, $var_st, $var_kl); |
|
| 2185 | } |
|
| 2186 | ||