开发者

Erlang calculating HMAC-SHA1 example? [closed]

开发者 https://www.devze.com 2023-01-25 02:41 出处:网络
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.

We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it开发者_开发百科 can be answered with facts and citations.

Closed 7 years ago.

Improve this question

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

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


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"


The sha_mac function in the crypto module is HMAC-SHA1:

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

The reason it might not match is because you're probably comparing it to a "hexdigest", not the raw digest data.


string:to_lower(lists:flatten([[integer_to_list(N, 16) || <<N:4>> <= crypto:sha_mac("hello", "world")]])).
0

精彩评论

暂无评论...
验证码 换一张
取 消