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?
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
.
Cela devrait faire l'affaire;
echo 9B2317C2C941A179130D0D28961AB542C88745658BE328F557422EA0AF8F60E8 | xxd -r -p | base64
Production:
myMXwslBoXkTDQ0olhq1QsiHRWWL4yj1V0IuoK+PYOg=