Как проверить пароли 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?