SCRAM-SHA-1 помогите имплементировать алгоритм на php
Всем привет, очень прошу помощи с имплементацией на пхп нужного кода, собственно вот семантическое описание задачи:
clientFinalMessageBare = "c=biws,r=" .. serverNonce saltedPassword = PBKDF2-SHA-1(normalizedPassword, salt, i) clientKey = HMAC-SHA-1(saltedPassword, "Client Key") storedKey = SHA-1(clientKey) authMessage = initialMessage .. "," .. serverFirstMessage .. "," .. clientFinalMessageBare clientSignature = HMAC-SHA-1(storedKey, authMessage) clientProof = clientKey XOR clientSignature serverKey = HMAC-SHA-1(saltedPassword, "Server Key") serverSignature = HMAC-SHA-1(serverKey, authMessage) clientFinalMessage = clientFinalMessageBare .. ",p=" .. base64(clientProof) Мой вариант, но не работает правильно: $cfmb = 'c=biws,r='.$pr; $saltpass = hash_pbkdf2('sha1', 'MyPass123', $ps, $pi); $ckey = hash_hmac('sha1', $saltpass, 'Client Key'); $sckey = sha1($ckey); $authmsg = $im1.','.$chal.','.$cfmb; $csign = hash_hmac('sha1', $sckey, $authmsg); $cproof = bin2hex(pack('H*',$ckey) ^ pack('H*',$csign)); $cfm = $cfmb.',p='.base64_encode($cproof); Подскажите, что не так? Все переменные иницаилизированы правильными значениями само собой. ЗЫ: Если есть кто хорошо разбирается в вопросе готов даже заплатить за помощь. |
Вы надежный хеш пароля хотите получить?
|
Нет, я пишу XMPP-клиент, собственно у меня уже есть рабочий, который использует механизм plain, но теперь понадобилось использовать этот.
Вот статья, которой я руководствуюсь: https://ru.wikipedia.org/wiki/SCRAM |
Реализация этого на РНР уже есть в PEAR. Осталось гугл спросить, а у вас слишком просто. )
|
Еслиб все было так просто) Класса с поддержкой именно этой авторизации я найти не смог, если у вас получится - очень удивлюсь, но буду счастлив)
|
Да у меня собственно ни разу не возникало нужды в этом, потребности не было пока, просто шарахаясь по разным библиотекам, в частности PEAR, помню что встречал.
Что касается авторизации на сайте, так начиная с версии 5.5 появилось более удобное - Password Hashing, нежели ранее приходилось использовать. PS. Спецом гугла потревожил, разве не это нужно? |
Твоюж налево, оно еще и работает! Да, оно. Я гуглил SCRAM PHP, поискать напрямую в pear мозгов не хватило. :thanks:
|
Часовой пояс GMT +3, время: 15:13. |