Как проверить пароли Symfony2 sha512 с помощью nodejs

Я должен быть в состоянии подтвердить вnode некоторый пароль, который был сгенерирован и сохранен с использованиемSymfony2 сsha512 кодирование.

Я могу получитьhash иsalt просто отлично но при использованииcrypto Мне не удается сгенерировать хеш, используя соль, которая соответствует той, которая хранится в базе данных

Symfony security.yml

security:
    encoders:
        "FOS\UserBundle\Model\UserInterface": sha512

Хеш хранится в БД

6zxwRZc4EPXKxQes9avs0ZyCRFkC4dtpXrT983ML8VLvv9WhRnAi282bwuFuj3LHPQBGmqD1BfCLDUXGdHIjZQ==

Соль хранится в БД

qu7rjvaietws8kg4cgsggksookwsws8

Поскольку на стороне узла есть соль, я используюcrypto.pbkdf2Syncв конфигурации нет итераций, и кажется, что по умолчанию Symfony равен 1000. Длина по умолчанию, тем не менее, равна 40, а длина сохраненного хэша равна 128, поэтому используется длина 128 (попытка 40 без успеха).

Я также попробовал 5000 итераций, как используется Symfony 2MessageDigestPasswordEncoder и объединение необработанного пароля с солью, как Symfonyraw_password{salt} безуспешно.

Я также могу получить base64 достаточно долго, если я используюpbkdf2Sync сгенерировать ключ длины40 (в соответствии с Symfony по умолчанию), а затем использовать его для обновления сгенерированного хешаcrypto.createHash

var hash = user.password;
var salt = user.salt;

console.log(hash);

console.log(crypto.pbkdf2Sync("password", salt, 1000, 128 >> 1, "sha512").toString("base64"));

Размер сгенерированного хеша и формат совпадают с тем, который хранится в базе данных, но они не совпадают по значениям, что является моей проблемой. Я также попробовал несколько итерационных значений, генерируемых динамически, без какой-либо удачи

Выход

6zxwRZc4EPXKxQes9avs0ZyCRFkC4dtpXrT983ML8VLvv9WhRnAi282bwuFuj3LHPQBGmqD1BfCLDUXGdHIjZQ==
5QPz3zXwhak/bTD2S9IFEEFmiJ8q/fqIlSF6cWin7dqmh92EFNXjw/FLtQw7NX3LVehwcXKjfypo2EhJxiLouQ==
w9+8xjklvGq9CuiqY8tEoxEetLV9lbhLJ/KaFQEooUFJrGT9/EdsVd/sSRJ+DXjsH4RQeaqsmftmuzLPgVv5MA==

Как я могу сгенерировать хеш, чтобы он соответствовал способу, используемому Symfony 2?

Ответы на вопрос(3)

Ваш ответ на вопрос