Cómo validar las contraseñas de Symfony2 sha512 usando nodejs

Necesito poder validar ennode alguna contraseña que fue generada y almacenada usandoSymfony2 consha512 codificación

Puedo recuperar elhash y elsalt bien pero cuando se usacrypto No puedo lograr generar un hash usando la sal que coincide con la almacenada en la base de datos.

Symfony security.yml

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

Hash almacenado en DB

6zxwRZc4EPXKxQes9avs0ZyCRFkC4dtpXrT983ML8VLvv9WhRnAi282bwuFuj3LHPQBGmqD1BfCLDUXGdHIjZQ==

Sal almacenada en DB

qu7rjvaietws8kg4cgsggksookwsws8

Como hay una sal en el lado del nodo que estoy usandocrypto.pbkdf2Sync, no hay iteraciones establecidas en la configuración y parece que el valor predeterminado de Symfony es 1000. Sin embargo, la longitud predeterminada es 40, pero la longitud de hash almacenada es 128, por lo que utiliza 128 como longitud (intentado 40 sin éxito).

También probé 5000 iteraciones como las que usa Symfony 2MessageDigestPasswordEncoder y fusionando la contraseña sin procesar con la sal como lo hace Symfonyraw_password{salt} sin éxito.

También puedo obtener una base64 el tiempo suficiente si usopbkdf2Sync para generar una clave de longitud40 (según el valor predeterminado de Symfony) y luego usar eso para actualizar un hash generar concrypto.createHash

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

console.log(hash);

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

El tamaño del hash generado y el formato coincide con el almacenado en la base de datos, pero no coinciden en los valores, que es mi problema. También probé múltiples valores de iteración generados dinámicamente sin suerte.

Salida

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

¿Cómo puedo generar el hash para que coincida con la forma utilizada por Symfony 2?

Respuestas a la pregunta(3)

Su respuesta a la pregunta