ターミナルでopenSSLを使用してHmacSHA256を実行するには?

ターミナルでopenSSLを使用してHmacSHA256を実行するには?

コマンドラインでOpenSSLを使用して、次のJavaコードスニペットを実行する必要があります。

  private byte[] hmacSha256(byte[] key, byte[] payload) throws GeneralSecurityException {
    Mac mac = Mac.getInstance("HmacSHA256");
    mac.init(new SecretKeySpec(key, "HmacSHA256"));
    mac.update(payload);
    return mac.doFinal();
  }

以下は、Javaでは機能しますがOpenSSLでは機能しないテスト値です。

KEY_BASE64="xtztqVgjD+5VHL4rVeKYm0USpDJTEy5Tjc9aK6I/oV0="
KEY_HEX="c6dceda958230fee551cbe2b55e2989b4512a43253132e538dcf5a2ba23fa15d"
PAYLOAD_BASE64="j9F8TrzCabcDoLdHUDaUuv6ea224xikwbPF1IW0OjkY="
DIGEST_HEX="c2ec711448a4f5bb851279eca0a628847254855966ad09de7e734b7df48e198a"

私はすでに試しました。この回答しかし、私は別の結果を得ます。次のようになります。

$ echo $PAYLOAD_BASE64 | base64 -d | openssl dgst -sha256 -hmac -hex -macopt hexkey:$KEY_HEX
(stdin)= 93d5555dbf95873441ccc63f9a4bc361e6f291f7b0a81db4edc35b8212b04dad

16進形式で出力を提供しますが、同じペイロードとキー値を使用してJavaコードスニペットを実行したときに得られた値と値が一致しません。

ほとんどのLinux基本パッケージマネージャのリストで広く利用可能な別のコマンドラインツールがあります。

ベストアンサー1

私は仕事を得ました。私がしなけれopenssl sha256ばならなかったのは、代わりに使用することでしたopenssl dgst -sha256

完全なコマンドは次のとおりです。

$ echo $PAYLOAD_BASE64 | base64 -d | openssl sha256 -hex -mac HMAC -macopt hexkey:$KEY_HEX
(stdin)= c2ec711448a4f5bb851279eca0a628847254855966ad09de7e734b7df48e198a

おすすめ記事