要在 RHEL/Fedora Core/其他基于 RPM 的 Linux 上启用 mhash,而无需重新构建 PHP,请从 http://phprpms.sourceforge.net/mhash 获取 php-mhash 和 mhash RPM。
要在 RHEL/Fedora Core/其他基于 RPM 的 Linux 上启用 mhash,而无需重新构建 PHP,请从 http://phprpms.sourceforge.net/mhash 获取 php-mhash 和 mhash RPM。
给 robert at mediamonks dot com
这样效果会更好,在你的函数中,你可以直接使用常量函数来获取 MHASH_SHA512 或任何其他值的实际值。
function getHashNotWorking($argStrHashMethod, $argStrString)
{
$strHashMethod = 'MHASH_' . $argStrHashMethod;
$strHashedString = bin2hex(mhash(constant($strHashMethod), $argStrString));
return $strHashedString;
}
现在
echo getHashNotWorking('SHA512', 'some string');
按你想要的方式工作。
function getHashNotWorking($argStrHashMethod, $argStrString)
{
$strHashMethod = 'MHASH_' . $argStrHashMethod;
$strHashedString = bin2hex(mhash($strHashMethod, $argStrString));
return $strHashedString;
}
echo getHashNotWorking('SHA512', 'some string');
这将返回一个错误,提示 mhash 函数需要一个长整型而不是字符串。
=============================
for ($intI = 0; $intI <= mhash_count(); $intI++)
{
$arrHashTypes[mhash_get_hash_name($intI)] = $intI;
}
function getHashWorking($argStrType, $argStrString)
{
global $arrHashTypes;
$strHashedString = bin2hex(mhash($arrHashTypes[$argStrType], $argStrString));
return $strHashedString;
}
echo getHashWorking('SHA512', 'some string');
这将返回使用所需哈希方法的哈希值。
有一个类用于生成与 DC 客户端(DC++、StrongDC、...)兼容的 TTH,它使用带有 tiger 算法的 mhash()
http://kupershtokh.blogspot.com/2007/12/on-phpclub.html