summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnthony Ferrara <ircmaxell@gmail.com>2013-04-30 14:14:57 -0400
committerAnthony Ferrara <ircmaxell@gmail.com>2013-04-30 14:14:57 -0400
commitac173adc70bc7904e2d446d29862197871f35cf4 (patch)
treea7cd102aba89d4716f69cb9d7a789e14d6292236
parent9995cba36810f8251ec12b712c752d6c782f5438 (diff)
parent93d86275d7964f67043ea98d04639c2cc3f03952 (diff)
downloadpassword_compat-ac173adc70bc7904e2d446d29862197871f35cf4.zip
password_compat-ac173adc70bc7904e2d446d29862197871f35cf4.tar.gz
password_compat-ac173adc70bc7904e2d446d29862197871f35cf4.tar.bz2
Merge branch 'master' into v1.0
-rw-r--r--lib/password.php18
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/password.php b/lib/password.php
index 359fa5b..afde872 100644
--- a/lib/password.php
+++ b/lib/password.php
@@ -45,6 +45,9 @@ if (!defined('PASSWORD_BCRYPT')) {
return null;
}
}
+ // The length of salt to generate
+ $raw_salt_len = 17;
+ // The length required in the final serialization
$required_salt_len = 22;
$hash_format = sprintf("$2y$%02d$", $cost);
break;
@@ -80,16 +83,15 @@ if (!defined('PASSWORD_BCRYPT')) {
}
} else {
$buffer = '';
- $raw_length = (int) ($required_salt_len * 3 / 4 + 1);
$buffer_valid = false;
if (function_exists('mcrypt_create_iv') && !defined('PHALANGER')) {
- $buffer = mcrypt_create_iv($raw_length, MCRYPT_DEV_URANDOM);
+ $buffer = mcrypt_create_iv($raw_salt_len, MCRYPT_DEV_URANDOM);
if ($buffer) {
$buffer_valid = true;
}
}
if (!$buffer_valid && function_exists('openssl_random_pseudo_bytes')) {
- $buffer = openssl_random_pseudo_bytes($raw_length);
+ $buffer = openssl_random_pseudo_bytes($raw_salt_len);
if ($buffer) {
$buffer_valid = true;
}
@@ -97,18 +99,18 @@ if (!defined('PASSWORD_BCRYPT')) {
if (!$buffer_valid && is_readable('/dev/urandom')) {
$f = fopen('/dev/urandom', 'r');
$read = strlen($buffer);
- while ($read < $raw_length) {
- $buffer .= fread($f, $raw_length - $read);
+ while ($read < $raw_salt_len) {
+ $buffer .= fread($f, $raw_salt_len - $read);
$read = strlen($buffer);
}
fclose($f);
- if ($read >= $raw_length) {
+ if ($read >= $raw_salt_len) {
$buffer_valid = true;
}
}
- if (!$buffer_valid || strlen($buffer) < $raw_length) {
+ if (!$buffer_valid || strlen($buffer) < $raw_salt_len) {
$bl = strlen($buffer);
- for ($i = 0; $i < $raw_length; $i++) {
+ for ($i = 0; $i < $raw_salt_len; $i++) {
if ($i < $bl) {
$buffer[$i] = $buffer[$i] ^ chr(mt_rand(0, 255));
} else {