Codificación Base64 de un hash SHA256

7

Actualmente estoy leyendo sobre JWTs y he escrito algo para crearlos. Cuando creé mi JWT noté que mi firma no se estaba codificando correctamente.

Por ejemplo, dado el hash

9B2317C2C941A179130D0D28961AB542C88745658BE328F557422EA0AF8F60E8

Mi código produce

OUIyMzE3QzJDOTQxQTE3OTEzMEQwRDI4OTYxQUI1NDJDODg3NDU2NThCRTMyOEY1NTc0MjJFQTBBRjhGNjBFOA==

Lo que espero obtener es

myMXwslBoXkTDQ0olhq1QsiHRWWL4yj1V0IuoK+PYOg=

¿Por qué los hashes codificados son tan diferentes y qué me falta?

    
pregunta etchesketch 14.12.2016 - 20:31
fuente

2 respuestas

10

Está haciendo una conversión de codificación hexadecimal (o base16 si lo desea) a base64. Entonces, usted es base64 que codifica los caracteres ASCII 9 (57), B (66) y 2 (50) que le dan OUIy .

Lo que deberías estar haciendo es codificar en base64 los bytes en bruto . Así que debes codificar 0x9B (155) y 0x23 (35) dándote myM .

    
respondido por el Anders 14.12.2016 - 22:58
fuente
5

Esto debería hacer;

echo 9B2317C2C941A179130D0D28961AB542C88745658BE328F557422EA0AF8F60E8 | xxd -r -p | base64

Salida:

myMXwslBoXkTDQ0olhq1QsiHRWWL4yj1V0IuoK+PYOg=
    
respondido por el Akash Mehta 22.02.2017 - 07:45
fuente

Lea otras preguntas en las etiquetas