2

我需要在 python 中重现 perl 的功能

  # perl
  perl -e'use Digest::HMAC_SHA1 qw(hmac_sha1_hex); my $hmac = hmac_sha1_hex("string1", "string2"); print $hmac . "\n";'
  25afd2da17e81972b535d15ebae464e291fb3635


  #python
  python -c 'import sha; import hmac; print hmac.new("string1", "string2", sha).hexdigest()'
  3953fa89b3809b8963b514999b2d27a7cdaacc77

如您所见,十六进制摘要不一样...如何在 python 中重现 perl 代码?

谢谢 !

4

1 回答 1

10

Python 的 HMAC 构造函数只是以相反的顺序获取密钥和消息——Pythonhmac先获取密钥,PerlDigest::HMAC获取密钥第二。

python -c 'import sha; import hmac; print hmac.new("string2", "string1", sha).hexdigest()'
25afd2da17e81972b535d15ebae464e291fb3635

匹配您的 Perl 示例就好了:)

于 2011-08-30T14:57:09.133 回答