Soy un novato total en JavaScript. Quiero jugar con una API Rest. Esto requiere la creación de una clave X-Auth para la autenticación.
La documentación decía:
El encabezado X-Auth-Key debe construirse con el siguiente algoritmo: md5(api_key + md5(url + X-Auth-User + api_key + X-Auth-Expires)).
Por ejemplo, considere una solicitud GET a https://<server_ip>/api/live_events/1?clean=true por parte del usuario 'admin' con la api_key '1acpJN7oEDn3BDDYhQ' que vence el 1 de junio de 2011 UTC. En este caso, el parámetro de URL es '/live_events/1' y el valor de X-Auth-Expires es '1306886400'. Por lo tanto, el valor de X-Auth-Key debe calcularse de la siguiente manera:
md5('1acpJN7oEDn3BDDYhQ' + md5('/live_events/1'+'admin'+'1acpJN7oEDn3BDDYhQ'+'1306886400')) => md5('1acpJN7oEDn3BDDYhQ' + md5('/live_events/1admin1acpJN7oEDn3BDDYhQ1306886400')) => ' 180c88df8d0d4182385f6eb7e7045a42 '
He intentado implementar esto con CryptoJs hasta ahora, pero desafortunadamente no puedo obtener los valores del ejemplo:
<script> var md5xx = CryptoJS.MD5('/live_events/1admin1acpJN7oEDn3BDDYhQ1306886400') var md5yy = CryptoJS.MD5(('1acpJN7oEDn3BDDYhQ') + String(md5xx)); console.log(md5yy.toString()); // => 17222238c238b7ac9f76ea8d0fe1e330 </script>¡Realmente agradecería algo de ayuda! ¡Gracias por adelantado!
El hash md5 que obtuvo 17222238c238b7ac9f76ea8d0fe1e330 es correcto.
El ejemplo 180c88df8d0d4182385f6eb7e7045a42 dado con búsqueda inversa da un enlace diferente /jobs/1admin1acpJN7oEDn3BDDYhQ1306886400 en lugar de /live_events/1admin1acpJN7oEDn3BDDYhQ1306886400 .
Puede cotejar con
https://md5.gromweb.com/?md5=180c88df8d0d4182385f6eb7e7045a42 y
https://md5.gromweb.com/?md5=a39ee4e3aa79939249cb6b5e7faead28
//the hash you actually expected var md5xx = CryptoJS.MD5('/jobs/1admin1acpJN7oEDn3BDDYhQ1306886400') var md5yy = CryptoJS.MD5(('1acpJN7oEDn3BDDYhQ') + String(md5xx)); console.log(md5yy.toString()); //correct hash according to the given link var md5xx = CryptoJS.MD5('/live_events/1admin1acpJN7oEDn3BDDYhQ1306886400') var md5yy = CryptoJS.MD5(('1acpJN7oEDn3BDDYhQ') + String(md5xx)); console.log(md5yy.toString()); <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>