python中perl hmac_sha1_hex的等价实现

2 投票
1 回答
1084 浏览
提问于 2025-04-17 00:43

我需要在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代码呢?

谢谢!

1 个回答

10

Python的HMAC构造函数在处理密钥和消息时顺序正好相反——在Python中,hmac是先输入密钥,然后再输入消息,而在Perl中,Digest::HMAC是先输入消息,再输入密钥。

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

这样和你的Perl例子完全一致哦 :)

撰写回答