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

251
Visualizações
CryptoJs SHA256 a Base64url valor incorrecto

Tengo el siguiente código:

 import Base64url from "crypto-js/enc-base64url" import SHA256 from "crypto-js/sha256"; //... const codeVerifier = "test-value"; const hashed = SHA256(codeVerifier); console.log({ sha256: hashed.toString() }); // output: sha256: 5b1406fffc9de5537eb35a845kc99521f26fba0e772d58b42e09f4221b9e043ae console.log({ base64: Base64url.stringify(hashed) }) // output: base64: WxQG__yd5VN-s1qEXJlSHyb7oOdy1YtC4J9CIbngQ64 // expected: base64: NWIxNDA2ZmZmYzlkZTU1MzdlYjM1YTg0NWM5OTUyMWYyNmZiYTBlNzcyZDU4YjQyZTA5ZjQyMjFiOWUwNDNhZQ

Como puede ver, el resultado que obtengo es incorrecto (utilicé un generador de base64url en línea para validar, como este ). Supongo que estoy haciendo algo mal aquí, pero no puedo verlo. Leí la documentación y no pude encontrar nada.

He preparado un pequeño codesandbox si ayuda.

about 4 years ago · Santiago Gelvez
3 Respostas
Responde à pergunta

0

Lo que está experimentando está relacionado con el paquete CryptoJS ya que vi que está usando crypto-js/enc-base64url dentro de su ejemplo de codebox.

Los objetos en CryptoJS son tipos de WordArray, lo que significa que cuando llamas a String() en dicho objeto, obtienes una cadena codificada en hexadecimal de ese objeto binario. Sin embargo, si imprime result.toString(CryptoJS.enc.Base64) , obtendrá la cadena codificada en Base64 del resultado binario.

Si toma su variable asignada y la codifica directamente en Base64 , probablemente se suponga que a ya es una cadena (por ejemplo, codificada en UTF-8). Las calculadoras en línea que está utilizando para la validación no saben que está codificada en hexadecimal.

Espero haber respondido a tu pregunta.

about 4 years ago · Santiago Gelvez Relatório

0

Entonces, después de buscar un poco más, esto es lo que hice:

 const codeVerifier = "test-value"; const hashed = SHA256(codeVerifier); // parse to utf-8-encoded data const utf8parsed = Utf8.parse(hashed.toString()); console.log({ sha256: hashed.toString() }); // output: sha256: 5b1406fffc9de5537eb35a845kc99521f26fba0e772d58b42e09f4221b9e043ae console.log({ base64: Base64url.stringify(utf8parsed) }); // correct output!

¡Gracias a los demás que ayudaron (@ZombieChowder)!

about 4 years ago · Santiago Gelvez Relatório

0

Como desea una cadena hexadecimal codificada en base64 del codificador base64 de la biblioteca hash y crypto-js no acepta cadenas, puede usar btoa .

 btoa(hashed.toString())

Pero eso podría no ser lo que desea, si realmente necesita la variante Base64url.

about 4 years ago · Santiago Gelvez 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