Doc #61307 [Nab->Opn]: hash-tiger generates a different value between 5.3/5.4
| From: | mike@php.net | 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