Des exemples ou des bibliothèques de caculer HMAC-SHA1 dans Erlang?Erlang calculant l'exemple HMAC-SHA1?
J'ai essayé Crypto Module, mais apparemment ne correspond pas exactement. Des exemples?
Des exemples ou des bibliothèques de caculer HMAC-SHA1 dans Erlang?Erlang calculant l'exemple HMAC-SHA1?
J'ai essayé Crypto Module, mais apparemment ne correspond pas exactement. Des exemples?
Pour développer la réponse précédente, voici le module HMAC en Python en utilisant l'algorithme SHA-1 algorithme avec la touche « bonjour » et le message « monde »:
>>> import hashlib
>>> import hmac
>>> hmac.HMAC(key='hello', msg='world', digestmod=hashlib.sha1).hexdigest()
'8a3a84bcd0d0065e97f175d370447c7d02e00973'
Voici l'équivalent en Erlang. J'utiliser une méthode plus efficace pour convertir le MAC binaire à un digest hexagonal dans le code typique, mais je celui-ci pour la brièveté:
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"
La fonction sha_mac dans le module Crypto est HMAC-SHA1:
http://www.erlang.org/doc/man/crypto.html#sha_mac-2
La raison pour laquelle il pourrait ne pas correspondre parce que vous comparez probablement à un « hexdigest », pas les données digest brutes .
Problème résolu. L'Erlang était correct et les bibliothèques C que j'utilisais étaient fausses. – barata7
string:to_lower(lists:flatten([[integer_to_list(N, 16) || <<N:4>> <= crypto:sha_mac("hello", "world")]])).
S'il vous plaît expliquer. Une seule ligne de code n'est pas considérée comme une réponse suffisante. –
crypto: sha_mac/2 est déprécié, remplacé par crypto: hmac/3 Vous êtes mieux de cette façon: '<< Mac: 160/entier >> = crypto: hmac (sha, <<"hello">>, <<"world">>).' – Berzemus
Cette interface n'existait pas en 2010, lorsque cette réponse a été écrite. Je crois que cette API a été ajoutée assez récemment dans une version R16. Vous êtes invités à proposer une modification. –