описанный вами алгоритм он производится на стороне серверадовкот посылает челендж
вот функция
static const char *get_cram_challenge(void)
{
unsigned char buf[17];
size_t i;
hostpid_init();
random_fill(buf, sizeof(buf)-1);
for (i = 0; i < sizeof(buf)-1; i++)
buf[i] = (buf[i] % 10) + '0';
buf[sizeof(buf)-1] = '\0';
return t_strdup_printf("<%s.%s@%s>", (const char *)buf,
dec2str(ioloop_time), my_hostname);
}
вот что происходит на стороне клиента (пример из SquirrelMail)
function cram_md5_response ($username,$password,$challenge) {
$challenge=base64_decode($challenge); // декодируем полученный челендж
$hash=bin2hex(hmac_md5($challenge,$password)); // потом шифруем этот челендж функцией hmac_md5
$response=base64_encode($username . " " . $hash) . "\r\n"; // кодируем полученный хеш в виде USERNAME <SPACE> HASH
return $response;
}
и отправляем эти данные на сервер
а теперь вопрос - зная хеш пароля куда я его буду пихат ?????????????
судя по алгоритму да можно его подставить но механизм аутентификации этого не позволит