web-dev-qa-db-ja.com

SHA256ハッシュのBase64エンコード

私は現在JWTを読んでいて、それらを作成するために何かを書いています。 JWTを作成したときに、署名が正しくエンコードされていないことに気付きました。

たとえば、ハッシュが与えられた

9B2317C2C941A179130D0D28961AB542C88745658BE328F557422EA0AF8F60E8

私のコードは

OUIyMzE3QzJDOTQxQTE3OTEzMEQwRDI4OTYxQUI1NDJDODg3NDU2NThCRTMyOEY1NTc0MjJFQTBBRjhGNjBFOA==

期待しているのは

myMXwslBoXkTDQ0olhq1QsiHRWWL4yj1V0IuoK+PYOg=

エンコードされたハッシュがなぜそれほど異なり、何が欠けているのですか?

10
etchesketch

16進エンコーディング(または、必要に応じてbase16)からbase64への変換を行っています。したがって、ASCII文字9(57)、B(66)および2(50)をbase64エンコードしてOUIy

あなたがしなければならないのは、base64エンコーディング生のバイトです。したがって、0x9B(155)と0x23(35)をエンコードしてmyMを与える必要があります。

13
Anders

これで十分です。

echo 9B2317C2C941A179130D0D28961AB542C88745658BE328F557422EA0AF8F60E8 | xxd -r -p | base64

出力:

myMXwslBoXkTDQ0olhq1QsiHRWWL4yj1V0IuoK+PYOg=
8
Akash Mehta