私は現在JWTを読んでいて、それらを作成するために何かを書いています。 JWTを作成したときに、署名が正しくエンコードされていないことに気付きました。
たとえば、ハッシュが与えられた
9B2317C2C941A179130D0D28961AB542C88745658BE328F557422EA0AF8F60E8
私のコードは
OUIyMzE3QzJDOTQxQTE3OTEzMEQwRDI4OTYxQUI1NDJDODg3NDU2NThCRTMyOEY1NTc0MjJFQTBBRjhGNjBFOA==
期待しているのは
myMXwslBoXkTDQ0olhq1QsiHRWWL4yj1V0IuoK+PYOg=
エンコードされたハッシュがなぜそれほど異なり、何が欠けているのですか?
16進エンコーディング(または、必要に応じてbase16)からbase64への変換を行っています。したがって、ASCII文字9
(57)、B
(66)および2
(50)をbase64エンコードしてOUIy
。
あなたがしなければならないのは、base64エンコーディング生のバイトです。したがって、0x9B
(155)と0x23
(35)をエンコードしてmyM
を与える必要があります。
これで十分です。
echo 9B2317C2C941A179130D0D28961AB542C88745658BE328F557422EA0AF8F60E8 | xxd -r -p | base64
出力:
myMXwslBoXkTDQ0olhq1QsiHRWWL4yj1V0IuoK+PYOg=