Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

271
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda