Реализации Phpass в WP и Node не совпадают, если в пароле есть международные символы.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Реализации Phpass в WP и Node не совпадают, если в пароле есть международные символы.

Сообщение Anonymous »

Я хочу аутентифицировать пользователей WP, используя мою собственную службу аутентификации, написанную на Node. У меня есть пользователи, сохраненные в таблице wp_users. Их пароли хешируются WordPress с помощью метода Phpass. Когда пользователь пытается войти в свою учетную запись, WP использует метод CheckPassword() и возвращает логическое значение true/ соответствует пароль или нет.

Теперь я хочу использовать Node для сравнения пароля пользователя с хешем WP. Я нашел модуль node-phpass в NPM, который должен обеспечивать алгоритм Phpass для хеширования паролей.

Все в порядке, пока я не использую международные символы. Вот пример:

В WP я устанавливаю такой пароль и получаю хеш:

P: alamakota

H: $P$BSrncAWIY2KU7waUGLzayaon6v3gKU1

Когда я пытаюсь войти в систему, WP говорит "Все хорошо, заходи, чувак"

Теперь я беру хеш и пытаюсь проверить его с помощью модуля node-phpass:

Код: Выделить всё

const hasher = new PasswordHash(8, true, 7);
const valid = hasher.CheckPassword('alamakota', '$P$BSrncAWIY2KU7waUGLzayaon6v3gKU1');
console.log(valid); // => true
и он говорит "Круто, пароль совпадает!"

Он прекрасно работает и в другом случае.

Теперь, где возникает проблема, спросите вы? Здесь:

Ситуация почти точно такая же, как и раньше, но я поставлю в пароль символ ą и хеширую его с помощью WP:

P: alamakotą

H: $P$B6kY.rneyNwdPvAgd0lDq6oYv82XOd1

Опять же, при проверке с помощью WP он говорит "Пароль совпадает! Заходите".

К сожалению, когда я пытаюсь сравнить пароль с помощью node-phpass, он говорит "Извини, чувак, ты должен не пройти":

Код: Выделить всё

const hasher = new PasswordHash(8, true, 7);
const valid = hasher.CheckPassword('alamakotą', '$P$B6kY.rneyNwdPvAgd0lDq6oYv82XOd1');
console.log(valid); // => false
По-другому это тоже не работает.

Почему так? Почему я не могу использовать хеш WP в Node.js, если в пароле есть международные символы?

ОБНОВЛЕНИЕ:

Я только что обнаружил, что функция PHP md5() и функция crypto.createHash('md5') в JS не возвращают один и тот же хэш, если во входной строке есть международные символы. Есть ли какое-нибудь решение этой проблемы?

Подробнее здесь: https://stackoverflow.com/questions/567 ... ternationa
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»