首页 > 解决方案 > 这个 sha256 散列方法的 PHP 等价物是什么

问题描述

我正在尝试将 python 方法转移到 PHP,但我不断得到不同的结果。

message是一个整数并且secret是一个字符串

python脚本是

hmac.new(secret.encode('utf-8'), struct.pack('>I', message), hashlib.sha256).hexdigest()
// 5d1fa4d6...

据我所知,这应该导致相同的值

hash_hmac('SHA256', $message, $secret)
// 5cd80ad7...

标签: pythonphpsha256

解决方案


struct.pack('>I', message)不仅仅是将数字转换为二进制。它使用大端 4 字节表示。

PHP 等价物是pack('N', $message)

https://docs.python.org/3/library/struct.html

https://www.php.net/manual/de/function.pack.php


推荐阅读