web-dev-qa-db-fra.com

Encodage Base64 d'un hachage SHA256

Je lis actuellement sur les JWT et j'ai écrit quelque chose pour les créer. Lorsque j'ai créé mon JWT, j'ai remarqué que ma signature n'était pas encodée correctement.

Par exemple, étant donné le hachage

9B2317C2C941A179130D0D28961AB542C88745658BE328F557422EA0AF8F60E8

Mon code produit

OUIyMzE3QzJDOTQxQTE3OTEzMEQwRDI4OTYxQUI1NDJDODg3NDU2NThCRTMyOEY1NTc0MjJFQTBBRjhGNjBFOA==

Ce que j'attends, c'est

myMXwslBoXkTDQ0olhq1QsiHRWWL4yj1V0IuoK+PYOg=

Pourquoi les hachages codés sont-ils si différents et qu'est-ce qui me manque?

10
etchesketch

Vous effectuez une conversion de l'encodage hexadécimal (ou base16 si vous le souhaitez) en base64. Vous codez donc en base64 les caractères ASCII 9 (57), B (66) et 2 (50) vous donnant OUIy.

Ce que vous devez faire, c'est le codage base64 les octets bruts. Vous devez donc coder 0x9B (155) et 0x23 (35) vous donnant myM.

13
Anders

Cela devrait faire l'affaire;

echo 9B2317C2C941A179130D0D28961AB542C88745658BE328F557422EA0AF8F60E8 | xxd -r -p | base64

Production:

myMXwslBoXkTDQ0olhq1QsiHRWWL4yj1V0IuoK+PYOg=
8
Akash Mehta