【问题标题】:Strange behaviour in php hash_hmacphp hash_hmac 中的奇怪行为
【发布时间】:2018-11-17 03:04:56
【问题描述】:

我正在用 php 创建一个简单的 api。

$signature_string = "MARCIGETapi/v1/test/636779232000000000FIXXISOFTRGllcyBpc3QgZWluIFRlc3Q="
$new_sig = hash_hmac("sha256",  $signature_string, $api_key, false);
echo $new_sig;

24f305d19cad2e848b3407f64bc21ada0ff1978a2487a23f26aa35f3a1c8204a

现在解释一下

$new_sig = hash_hmac("sha256", "MARCIGETapi/v1/test/636779232000000000FIXXISOFTRGllcyBpc3QgZWluIFRlc3Q=" , $api_key, false);
echo $new_sig;

c1d2347e60a648838fd8a98a41174fc9a4b18371e18261931f3337951b8a6cdf

第二个是我能够在 c# 客户端上生成的预期。

【问题讨论】:

  • 请提供此问题的 MCVE。它不应该仅仅因为值首先保存在变量中而创建不同的散列。也许$signature_string 变量或$api_key 变量正在改变。
  • 我很确定这可以使用任何字符串作为 api_key 进行复制。我 100% 确定数据是相同的(两次都使用 api_key)。 2 个 sn-ps 紧随其后,并且 api_key 永远不会改变。
  • 仅使用这些代码块是无法复制的。无论消息是直接在hash_hmac() 调用中还是通过变量写入,它们都将返回相同的哈希值。请提供 MCVE。
  • 我也遇到了同样的问题 :( 你找到什么解决办法了吗?我遇到的问题很奇怪

标签: php sha256 hmac


【解决方案1】:

我在我的一个项目中遇到了同样的问题。 试试看:

$new_sig = hash_hmac("sha256", trim($signatur_string," "), $api_key);

【讨论】:

  • 那么这是你输入的一个完全不同的问题。
猜你喜欢
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 2014-07-08
  • 2013-08-09
  • 2021-11-21
  • 2018-05-20
  • 2012-01-07
  • 1970-01-01
相关资源
最近更新 更多