计算字节数组的SHA-256

时间:2012-12-31 10:27:13

标签: php

我在以下代码中有一个字符串$concate。我按如下方式计算了字符串的字节数组:

for($i = 0; $i < strlen($concate); $i++){
    $binary[] = ord($concate[$i]);
}

现在我想计算字节数组$binary的SHA-256哈希值,但我不知道该怎么做。有人会建议吗?

我要做的是: -

  1. 计算字符串的二进制文件(使用utf-8编码)(例如 - “hello world”)。

  2. 计算步骤1结果的SHA-256。

  3. 计算步骤2的输出的十六进制。

2 个答案:

答案 0 :(得分:6)

字符串本身是二进制格式。所以hash('sha256', $concate)就足够了。如果希望输出为二进制,请将第三个参数设置为true。

$hash = hash('sha256', $concate, true); // or
$hash = hex2bin(hash('sha256', $concate)); // provides same output as above

它是二进制字符串而不是十六进制字符串。

请参阅this example以获取说明。

答案 1 :(得分:0)

您可以将二进制数据存储在PHP字符串中。无需将其转换为字节数组。我认为这就是你要找的东西。

echo hash('sha256', $concate);