Erlang で HMAC-SHA1 を計算する例やライブラリはありますか?
Crypto Module を試してみましたが、どうやら正確には一致しません。例はありますか?
前の答えを拡張するために、キー「hello」とメッセージ「world」でSHA-1アルゴリズムを使用するPythonのhmacモジュールを次に示します。
>>> import hashlib
>>> import hmac
>>> hmac.HMAC(key='hello', msg='world', digestmod=hashlib.sha1).hexdigest()
'8a3a84bcd0d0065e97f175d370447c7d02e00973'
これがErlangの同等のものです。通常のコードでは、より効率的な方法を使用してバイナリMACを16進ダイジェストに変換しますが、簡潔にするためにこれを使用しました。
1> crypto:start().
ok
2> <<Mac:160/integer>> = crypto:hmac(sha, <<"hello">>, <<"world">>).
<<138,58,132,188,208,208,6,94,151,241,117,211,112,68,124,
125,2,224,9,115>>
3> lists:flatten(io_lib:format("~40.16.0b", [Mac])).
"8a3a84bcd0d0065e97f175d370447c7d02e00973"
crypto モジュールの sha_mac 関数は HMAC-SHA1 です。
http://www.erlang.org/doc/man/crypto.html#sha_mac-2
一致しない理由は、生のダイジェスト データではなく、おそらく「hexdigest」と比較しているためです。