Doc #61307 [Nab->Opn]: hash-tiger generates a different value between 5.3/5.4

From: Date: Fri, 09 Mar 2012 08:51:26 +0000
Subject: Doc #61307 [Nab->Opn]: hash-tiger generates a different value between 5.3/5.4
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-8041@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=61307&edit=1 ID: 61307 Updated by: mike@php.net Reported by: andres at phalconphp dot com Summary: hash-tiger generates a different value between 5.3/5.4 -Status: Not a bug +Status: Open Type: Documentation Problem Package: hash related Operating System: Irrelevant PHP Version: 5.4.0 Block user comment: N Private report: N New Comment: The doc team would probably not notice an "not a bug" bug ;) Previous Comments: ------------------------------------------------------------------------ [2012-03-09 08:49:50] mike@php.net Here's something for the documentation team: /* calculate pre-php-5.4 tiger hashes with php-5.4 */ 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 ); } ------------------------------------------------------------------------ [2012-03-08 21:16:04] andres at phalconphp dot com Thanks Mike and Rasmus for all your great help! ------------------------------------------------------------------------ [2012-03-08 17:26:48] mike@php.net Sorry folks, here's a one-liner to re-create pre-PHP-5.4 hashes: implode("", array_map("bin2hex", array_map("strrev", str_split(hash("tiger192,3", $input, true), 8)))); Truncate the result to the length you need (128,160,192 bits). Make sure every array value is 16 hex digits long or else lpad it with literal 0s. If you used 192 bit tiger, you can use the following one-liner to create correct hashes from the wrong ones: implode("", array_map("bin2hex", array_map("strrev", array_map("hex2bin", str_split($wronghash,16))))); ------------------------------------------------------------------------ [2012-03-07 19:40:33] me at ktamura dot com Thanks mike. I should have read the commit message first. Sorry for the false allegation. ------------------------------------------------------------------------ [2012-03-07 18:15:40] rasmus@php.net Yeah, I think we need to come up with a way to support both or else it leaves people without an easy way to fix those hashes. Technically I guess you can reconstruct it from the raw by flipping the bytes, but that is rather error- prone. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=61307 -- Edit this bug report at https://bugs.php.net/bug.php?id=61307&edit=1

« previous php.doc.bugs (#8041) next »