如何在php中将其从十六进制编码为十六进制?HMAC SHA-1 (英语)

How to encode this from hex to hex in php ? hmac sha-1

提问人:kostas m 提问时间:9/3/2023 最后编辑:Mostafa Arian Nejadkostas m 更新时间:9/8/2023 访问量:51

问:

我需要用php写这个

https://cryptii.com/pipes/QiZmdA

我尝试过这些,但没有产生相同的结果

<?php
    echo hash_hmac('sha1', '002590cd26da', "8544e3b47eca58f9583043f8");
 echo var_dump(hash_hmac("sha1", "002590cd26da", pack("H*", "8544e3b47eca58f9583043f8")));
?>

我做错了什么?

php 编码 sha1 hmac

评论


答:

1赞 Anas Fanani 9/3/2023 #1

您需要先将十六进制字符串转换为二进制,然后使用带有“true”参数的函数来获得二进制输出,最后,将二进制 HMAC 转换为十六进制字符串。hash_hmac

这里修复了示例代码:

<?php
$data = hex2bin("002590cd26da"); // Convert the hex string to binary
$key = hex2bin("8544e3b47eca58f9583043f8"); // Convert the hex key to binary

$hmac = hash_hmac('sha1', $data, $key, true); // Use 'true' to get binary output
$hmac_hex = bin2hex($hmac); // Convert the binary HMAC to a hex string

echo "HMAC: " . $hmac_hex;
?>

代码将产生输出:HMAC: 857ab7a94a4c103e3a8cc0442db0d4745064bb73

现场测试 : https://3v4l.org/q4rJj

评论

1赞 kostas m 9/4/2023
谢谢,它也可以像这样工作 $t=hash_hmac('sha1', pack(“H*”, $macaddr), pack(“H*”, '8544e3b47eca58f9583043f8'));干杯