1. ホーム
  2. java

[解決済み] HMAC-SHA256 署名計算のためのアルゴリズム

2023-07-05 13:27:20

質問

私はHMAC-SHA256アルゴリズムを使って署名を作成しようとしており、これは私のコードです。 私はUS ASCIIエンコーディングを使用しています。

final Charset asciiCs = Charset.forName("US-ASCII");
final Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
final SecretKeySpec secret_key = new javax.crypto.spec.SecretKeySpec(asciiCs.encode("key").array(), "HmacSHA256");
sha256_HMAC.init(secret_key);
final byte[] mac_data = sha256_HMAC.doFinal(asciiCs.encode("The quick brown fox jumps over the lazy dog").array());
String result = "";
for (final byte element : mac_data)
{
    result += Integer.toString((element & 0xff) + 0x100, 16).substring(1);
}
System.out.println("Result:[" + result + "]");

上記のコードから得られる結果は、以下の通りです。

f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8

これはwikiに掲載されているものと同じです。

HMAC_SHA256("key", "The quick brown fox jumps over the lazy dog") = 0x f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8

ただし 0x .

私は私がすべて正しくやっているかどうか、または私が私のコードを改善することができるかもしれないアイデア/コメントを探しています。

どのように解決するのですか?

0xは、それ以降の文字が16進文字列を表していることを示すだけです。

0x1A == 1Ah == 26 == 1A

というわけで、0xは出力される形式を明確にするためだけのもので、気にする必要はないです。