mhash_count

(PHP 4, PHP 5, PHP 7, PHP 8)

mhash_count获取最高可用的哈希 ID

警告

此函数自 PHP 8.1.0 起已 弃用。强烈建议不要依赖此函数。

描述

mhash_count(): int

获取最高可用的哈希 ID。

参数

此函数没有参数。

返回值

返回最高可用的哈希 ID。哈希从 0 到此哈希 ID 编号。

变更日志

版本 描述
8.1.0 此函数已被弃用。请改用 hash_*() 函数

示例

示例 #1 遍历所有哈希

<?php

$nr
= mhash_count();

for (
$i = 0; $i <= $nr; $i++) {
echo
sprintf("The blocksize of %s is %d\n",
mhash_get_hash_name($i),
mhash_get_block_size($i));
}
?>

添加说明

用户贡献的说明 1 条说明

1
holdoffhunger at gmail dot com
12 年前
MHash 函数 mhash_count() 返回最高评估的常量值,表示当前 MHash 安装中可用的哈希算法。例如,0 表示 CRC32,1 表示 MD5,2 表示 SHA1,等等。您可以通过对任何预定义的 MHash 常量执行 print 语句来获得这些算法的评估值,例如这里提供的常量:https://php.net/manual/en/mhash.constants.php

mhash_count() 在 MHash 中的目的类似于 hash_algos() 在 HASH 消息摘要框架中的目的。它不是提供可用哈希算法的数组,而是简单地提供算法常量的最高评估常量表达式。如示例代码所示,思路是使用“$i <= mhash_count()”条件在 for 循环中解析 mhash 算法列表。

但是,存在一个问题:评估的常量表达式的列表中跳过了几个整数。虽然 2 表示 SHA1,3 表示 HAVAL256 等等,但没有 4 和 6。当 for 循环处于该行时,它们会生成空白结果,并且您正在调用 mhash_get_block_size() 和 mhash_get_hash_name() 等函数。这些可能保留用于由于效率低下或缺乏安全性而被移除的算法,并且数字到预定义常量的设置未更改为使其向后兼容旧代码。

如果您想了解哪些算作有效常量,哪些不算,请尝试运行以下代码

<?php

// 作者:[email protected]

// 解析所有哈希算法
// ---------------------------------------------------

for($i = 0; $i <= mhash_count(); $i++)
{
// 获取算法信息
// ---------------------------------------------------

$mhash_algorithm_block_size = mhash_get_block_size($i);
$mhash_algorithm_name = mhash_get_hash_name($i);

// 决定是否打印算法信息
// ---------------------------------------------------

if(strlen($mhash_algorithm_name) < 1)
{
// 存在可用算法数据
// ---------------------------------------------------

print("# $i --- NO ALGORITHM NAME / NO ALGORITHM BLOCKSIZE .<br><br>");
}
else
{
// 不存在可用算法数据
// ---------------------------------------------------

print("# $i --- $mhash_algorithm_name to $mhash_algorithm_block_size .<br><br>");
}
}

?>

示例结果
............................

# 0 --- CRC32 to 4 .

# 1 --- MD5 to 16 .

# 2 --- SHA1 to 20 .

# 3 --- HAVAL256 to 32 .

# 4 --- NO ALGORITHM NAME / NO ALGORITHM BLOCKSIZE .

# 5 --- RIPEMD160 to 20 .

# 6 --- NO ALGORITHM NAME / NO ALGORITHM BLOCKSIZE .

# 7 --- TIGER to 24 .

# 8 --- GOST to 32 .

...(等等)...
To Top