No obtengo una coincidencia de sha1 en mi conversión de código C # a PHP, ¿qué me estoy perdiendo?

StackOverflow https://stackoverflow.com/questions/607017

Pregunta

Estoy tratando de entender esto para poder hacer algo similar. Lo sé:

buf contiene una clave de autenticación con un hash agregado (los últimos 20 bytes) El HashData que se está buscando en MachineKeySection es SHA1

length -= 20;
byte[] buffer2 = MachineKeySection.HashData(buf, null, 0, length);

for (int i = 0; i < 20; i++)
{
    if (buffer2[i] != buf[length + i])
    {
        return null;
    }
}

Esto es lo que creo que está pasando: Estamos hash todos menos los últimos 20 bytes de buf. Entonces estamos, 1 byte a la vez, comparando el hash que acabamos de crear con el hash que se adjunta a los últimos 20 bytes de buf.

Así que en PHP estoy intentando esto:

//get the length of the ticket -20 bytes
$ticketLn = strlen($buf)-40;
//grab all but the last 20 bytes
$ticket = substr($decrypthex, 0, $ticketLn);
//create a hash of the ticket
$hash = substr($decrypthex, $ticketLn);

Y el siguiente paso es comparar. Pero cuando hago eco de la salida de $ hash y sha1 ($ ticket) no coinciden, por lo que ni siquiera me he molestado en compararlos en el código.

Otros consejos

$ticket = substr($decrypthex, 0, -20);
$hash = substr($decrypthex, -20);
scroll top