|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2011-09-17 18:15 UTC] gelliott000 at yahoo dot ca
Description:
------------
PHP 5.3.8 with Suhosin-Patch (cli) (built: Sep 12 2011 10:57:59)
Using the crypt() function with string "veronica" and salt "_Q" returns an unexpected string: "*0".
Was expecting a proper hashed string beginning with the salt string to be returned.
Test script:
---------------
<?php
echo crypt("veronica","_Q");
?>
Expected result:
----------------
A hashed string beginning with the salt string to be returned.
Actual result:
--------------
The string "*0" is returned.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Nov 06 14:00:01 2025 UTC |
I'm sorry to be persistent, but I don't think that this is a problem with the salt length. To demonstrate, I have run crypt on several platforms with several versions of PHP. I ran crypt with the same string, but a different salt that varied by just one character: 1st case: crypt("veronica", "aQ"); 2nd case: crypt("veronica", "_Q"); The first case produces the same hashed string in all versions and platforms. The second cases produces a proper hashed string with the 5.1 and 5.2 variants, but not so with most of the 5.3 variants. Results for 1st case [crypt("veronica", "aQ")]: PHP 5.1.6 (cli) / RHEL Linux 2.6.18: aQW/7xmAl9Wk. PHP 5.2.17 (cli) / RHEL Linux 2.6.18: aQW/7xmAl9Wk. PHP 5.3.2-1ubuntu4.9 with Suhosin-Patch (cli) / Linux : aQW/7xmAl9Wk. PHP 5.3.0 (cli) / RHEL Linux 2.6.18: aQW/7xmAl9Wk. PHP 5.3.4 (cli) / RHEL Linux 2.6.18: aQW/7xmAl9Wk. PHP 5.3.6 (cli) / RHEL Linux 2.6.18: aQW/7xmAl9Wk. PHP 5.3.8 (cli) / Ubuntu Linux (2.6.32): aQW/7xmAl9Wk. PHP 5.3.8 with Suhosin-Patch (cli) / FreeBSD 7.2 : aQW/7xmAl9Wk. Results for the 2nd case [crypt("veronica", "_Q")]: PHP 5.1.6 (cli) / RHEL Linux 2.6.18: _Q9SLgD4qEEgM PHP 5.2.17 (cli) / RHEL Linux 2.6.18: _Q9SLgD4qEEgM PHP 5.3.2-1ubuntu4.9 with Suhosin-Patch (cli) / Linux : _Q9SLgD4qEEgM PHP 5.3.0 (cli) / RHEL Linux 2.6.18: _Q$$$$$$$qK1ZM2vrJkU PHP 5.3.4 (cli) / RHEL Linux 2.6.18: *0 PHP 5.3.6 (cli) / RHEL Linux 2.6.18: *0 PHP 5.3.7 with Suhosin-Patch (cli) / FreeBSD 7.2 : *0 PHP 5.3.8 (cli) / Ubuntu Linux (2.6.32): *0 PHP 5.3.8 with Suhosin-Patch (cli) / FreeBSD 7.2 : *0it is not about the length, and not about having underscore in the salt, as then both '_a' and 'a_' should produce *0, but it isn't: crypt("veronica", "a_") returns 'a_CzfMnN285eI' I also tried calling crypt with longer salt: crypt("veronica", "aaaaaaaaaaaaaaaa_"); produces "aaN/k77JE/bN6" on both 5.2.17 and 5.3.8 but crypt("veronica", "_aaaaaaaaaaaaaaaa"); differs: "_aaaaaaaadgbQ2NJa866" for 5.3.8 "_aeK.1tgvo.I." for 5.3.8 so it seems that _ only cause problems, if it is in the first position of the salt. ps: I also tried replacing the starting undescore with other "special" characters(^,!,#), they produced the same result on both 5.2.18 and 5.3.8, so it seems that it happens only with underscore. could someone have another look?