| Аргумент | Возможный тип | Описание |
| $p | — | — |
| $s | — | — |
| $c | — | — |
| $kl | — | — |
| $a = 'sha256' | — | — |
$hl = strlen(hash($a, null, true));
$kb = ceil($kl / $hl);
$dk = '';
for ($block = 1; $block <= $kb; $block++) {
$ib = $b = hash_hmac($a, $s . pack('N', $block), $p, true);
for ($i = 1; $i < $c; $i++)
$ib ^= ($b = hash_hmac($a, $b, $p, true));
$dk .= $ib;
}
return substr($dk, 0, $kl);