Erlang calculating HMAC-SHA1 example?

11,197

To expand on the previous answer, here is the hmac module in Python using the SHA-1 algorithm with the key 'hello' and the message 'world':

>>> import hashlib
>>> import hmac
>>> hmac.HMAC(key='hello', msg='world', digestmod=hashlib.sha1).hexdigest()
'8a3a84bcd0d0065e97f175d370447c7d02e00973'

Here's the equivalent in Erlang. I'd use a more efficient method to convert the binary MAC to a hex digest in typical code, but I used this one for brevity:

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"
Share:
11,197

Related videos on Youtube

barata7
Author by

barata7

Updated on June 10, 2020

Comments

  • barata7
    barata7 over 3 years

    Any examples or libraries to caculate HMAC-SHA1 in Erlang?

    I tried Crypto Module, but apparently doesn't match exactly. Any examples?

  • Lorenz Meyer
    Lorenz Meyer almost 10 years
    Please explain. A single line of code is not considered sufficient as an answer.
  • Berzemus
    Berzemus almost 10 years
    crypto:sha_mac/2 is deprecated, replaced with crypto:hmac/3 You're better of this way: <<Mac:160/integer>> = crypto:hmac(sha,<<"hello">>, <<"world">>).
  • YOUR ARGUMENT IS VALID
    YOUR ARGUMENT IS VALID almost 10 years
    That interface did not exist in 2010, when this answer was written. I believe this API was added rather recently in an R16 release. You're welcome to propose an edit.

Related