首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无效散列tiger192 3

无效散列tiger192 3
EN

Stack Overflow用户
提问于 2016-01-27 17:31:45
回答 1查看 116关注 0票数 1

我在使用php 5.4的php代码,我试图用tiger192,3散列字符串,毕竟我没有得到正确的哈希。

代码语言:javascript
复制
$keyLength = 24;
$keyCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$string = '';
$key = '';
$keyHash = '';
$first8Hash = '';
$uniqueKey = false;

while ($uniqueKey == false)
{
    for ($p = 0; $p < $keyLength; $p++)
    {
        $string .= $keyCharacters[mt_rand(0, strlen($keyCharacters)-1)];
    }

    $key = $string;
    $keyHash = hash('tiger192,3', $key);
    $first8Hash = substr($keyHash, 0, 16);

    $sql = "SELECT * FROM `penkeys` WHERE first8 = '" . $first8Hash . "'";
    $result = $db->sql_query($sql);
    while ($keyrow = $db->sql_fetchrow($result))
    {
        $uniqueKey = false;
    }
    $db->sql_freeresult($result);       
    $uniqueKey = true;
}

我正在散列字符串nQ5GcLMsOlPIaUYJOMkmjo7f,我应该得到babcb7d489332aee9c554a7a654bb65b4dd892e5b80e0156,但我得到的是ee2a3389d4b7bcba5bb64b657a4a559c56010eb8e592d84d。你能帮帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-27 18:16:06

这是一个有趣的案例,两个答案( php答案和时间戳生成器答案)都是正确的。在PHP >= 5.4中,老虎哈希使用大端字节表示法,而在PHP < 5.4中,它可能使用小对字节表示法(在http://php.net/manual/en/function.hash.php中有说明)。下面的函数位于php中,oldtiger给出了babcb7d489332aee9c554a7a654bb65b4dd892e5b80e0156作为结果。

代码语言:javascript
复制
function old_tiger($data = "", $width=192, $rounds = 3) {
return substr(
    implode(
        array_map(
            function ($h) {
                return str_pad(bin2hex(strrev($h)), 16, "0");
            },
            str_split(hash("tiger192,$rounds", $data, true), 8)
        )
    ),
    0, 48-(192-$width)/4
);
}
echo hash('tiger192,3', 'a-string'), PHP_EOL;
echo old_tiger('a-string'), PHP_EOL;

如果你注意到,babcb7d489332aee9c554a7a654bb65b4dd892e5b80e0156ee2a3389d4b7bcba5bb64b657a4a559c56010eb8e592d84d都是彼此的暗喻,这不仅仅是巧合。两个字符串之间的endianness发生了变化。每组8个字节的顺序是相反的.

ee-2a-33-89-d4-b7-bc-ba变成ba-bc-b7-d4-89-33-2a-ee.每个64位(8字节)字的字节顺序被切换.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35044184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档