Эдуардо,
Если вы посмотрите на руководство pack , pack
используется для преобразования строки в (шестнадцатеричной, восьмеричной, двоичной) в его числовое представление.
так
$hexcal = pack('H32', $challenge);
конвертирует строку типа 'cca86bc64ec5889345c4c3d8dfc7ade9' в фактическую 0xcca ... de9
если существует $ uamsecret, то же самое проделайте с MD5 из hexchal
, сопряженным с uamsecret
.
if ($ uamsecret) {
$ newchal = pack ("H *", md5 ($ hexchal. $ uamsecret));
} еще {
$ newchal = $ hexchal;
}
$response = md5("\0" . $password . $newchal);
MD% '\ 0' + $ пароль + $ newchal
$newpwd = pack("a32", $password);
pad password
до 32 байт
$pappassword = implode ("", unpack("H32", ($newpwd ^ $newchal)));
сделать xor newpwd
и newchal
и преобразовать его в шестнадцатеричную строку, я не получаю implode()
, может быть, это преобразовать в строку в массив символов.