Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

268
Vistas
Reproduciendo una operación hmac en python desde el caso de referencia de javascript

Tengo un fragmento de javascript que funciona correctamente:

 let seed = '319aa8124bbcddac2bae8438cfd5e658aeca56d524736739622dfb0a09942b22'; let salt = '0000000000000000004d6ec16dafe9d8370958664c1dc422f452892264c59526'; // 1. HMAC_SHA256(message=seed, key=salt) const hmac = CryptoJS.HmacSHA256(CryptoJS.enc.Hex.parse(seed), salt); let foo = hmac.toString(CryptoJS.enc.Hex); console.log("foo", hmac.toString(CryptoJS.enc.Hex)); //foo fe6a57f08b9970b7cd497e627afac956203a8ef829d2d97c7967775c1c0b6f6a

Intento reproducirlo en python:

 seed = "319aa8124bbcddac2bae8438cfd5e658aeca56d524736739622dfb0a09942b22" salt = "0000000000000000004d6ec16dafe9d8370958664c1dc422f452892264c59526" hm = hmac.new(str.encode(seed), b'', hashlib.sha256) hm.update(salt.encode("utf-8")) h = hm.hexdigest() print(h) # returns 01703d8db07432ca416151099533b60baea7a6450fc5b88788c7ca9af921b4a1

pero el resultado es incorrecto.

Creo que el paso que me falta es la CryptoJS.enc.Hex.parse(seed) que ocurre en javascript. No entiendo qué está haciendo eso con el valor inicial. Intento console.log() ese valor pero devuelve un objeto complicado que no entiendo.

Entonces mis preguntas son:

  1. ¿Qué le está haciendo esa función a la seed
  2. cómo hacer el equivalente en python.
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Estos algoritmos funcionan en bytes sin procesar. Su semilla representa esos bytes en hexadecimal, es decir, 31 es un byte, 9a es otro. CryptoJS.enc.Hex.parse analiza el hexadecimal en bytes. El equivalente en Python es con codecs.decode("...", "hex") .

La sal también parece hexadecimal, pero su JS no la analiza como tal, así que también la he tratado como UTF8 en Python.

 import hmac import hashlib import codecs seed = codecs.decode(b"319aa8124bbcddac2bae8438cfd5e658aeca56d524736739622dfb0a09942b22", "hex") salt = u"0000000000000000004d6ec16dafe9d8370958664c1dc422f452892264c59526".encode("utf8") hm = hmac.new(salt, seed, hashlib.sha256) h = hm.hexdigest() print(h) # returns fe6a57f08b9970b7cd497e627afac956203a8ef829d2d97c7967775c1c0b6f6a
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda