Irgendwelche Beispiele oder Bibliotheken, um HMAC-SHA1 in Erlang einzuschließen?Erlang Berechnung HMAC-SHA1 Beispiel?
Ich versuchte Crypto Module, aber anscheinend nicht genau übereinstimmen. Irgendwelche Beispiele?
Irgendwelche Beispiele oder Bibliotheken, um HMAC-SHA1 in Erlang einzuschließen?Erlang Berechnung HMAC-SHA1 Beispiel?
Ich versuchte Crypto Module, aber anscheinend nicht genau übereinstimmen. Irgendwelche Beispiele?
auf der vorherigen Antwort zu erweitern, ist hier das hmac Modul in Python den SHA-1-Algorithmus mit dem Schlüssel ‚Hallo‘ und die Meldung ‚Welt‘ mit:
>>> import hashlib
>>> import hmac
>>> hmac.HMAC(key='hello', msg='world', digestmod=hashlib.sha1).hexdigest()
'8a3a84bcd0d0065e97f175d370447c7d02e00973'
Hier ist das Äquivalent in Erlang. Ich würde eine effizientere Methode verwenden, um den binären MAC zu einem Hex-Digest in typischem Code zu konvertieren, aber ich verwenden, um diese eine der Kürze halbe:
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"
Die sha_mac Funktion im Kryptomodul ist HMAC-SHA1:
http://www.erlang.org/doc/man/crypto.html#sha_mac-2
Der Grund ist es nicht der Fall passen könnte, weil Sie wahrscheinlich sind es zu einem „hexdigest“ zu vergleichen, nicht die Rohdaten verdauen .
Problem gelöst. Der Erlang war korrekt und die C-Bibliotheken, die ich benutzte, sind falsch. – barata7
string:to_lower(lists:flatten([[integer_to_list(N, 16) || <<N:4>> <= crypto:sha_mac("hello", "world")]])).
Bitte erläutern. Eine einzelne Codezeile wird nicht als ausreichend angesehen. –
krypto: sha_mac/2 ist veraltet, ersetzt durch krypto: hmac/3 Du bist besser auf diese Weise: '<< Mac: 160/Ganzzahl >> = crypto: hmac (sha, <<"hello">>, <<"world">>).' – Berzemus
Diese Schnittstelle existierte 2010 nicht, als diese Antwort geschrieben wurde. Ich glaube, dass diese API kürzlich in einer R16-Version hinzugefügt wurde. Sie können gerne eine Bearbeitung vorschlagen. –