1

如何使用 PHP 的 hash() 函数执行以下操作?我已经尝试过但失败了(请参阅低得多的 php 代码)

echo -n '807542FB6685F9FD8F37D56FAF62F0BB4563684A51539E4B26F0840DB361E0027C' | xxd -r -p | sha256sum -b

上面的 bash 行给出了以下输出:

7DE4708EB23AB611371BB778FC0C8BDE80394AB2D8704D7129FB5771E2F1730D

这个 php 代码并没有做到这一点:

<?php
echo hash('sha256', '807542FB6685F9FD8F37D56FAF62F0BB4563684A51539E4B26F0840DB361E0027C');

输出:

e50f2ac6f7b6a2cbf640f44806affe06a330eb655f9e97bf70d5e09274340e4b
4

1 回答 1

2

您的代码的问题是您缺少xxd -r. 您可以使用以下方法获得此信息pack("H*", $string)

echo hash('sha256', pack("H*", '807542FB6685F9FD8F37D56FAF62F0BB4563684A51539E4B26F0840DB361E0027C'));

或者,如果您有 PHP 5.4 或更高版本,您可以使用hex2bin()

echo hash('sha256', hex2bin('807542FB6685F9FD8F37D56FAF62F0BB4563684A51539E4B26F0840DB361E0027C'));

这两个的输出是:

7de4708eb23ab611371bb778fc0c8bde80394ab2d8704d7129fb5771e2f1730d

于 2013-04-03T21:26:24.533 回答