11

Erlang で HMAC-SHA1 を計算する例やライブラリはありますか?

Crypto Module を試してみましたが、どうやら正確には一致しません。例はありますか?

4

3 に答える 3

22

前の答えを拡張するために、キー「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"
于 2010-11-17T07:34:54.430 に答える
2

crypto モジュールの sha_mac 関数は HMAC-SHA1 です。

http://www.erlang.org/doc/man/crypto.html#sha_mac-2

一致しない理由は、生のダイジェスト データではなく、おそらく「hexdigest」と比較しているためです。

于 2010-11-16T11:49:17.763 に答える