X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Ffunctions.php;h=25ae3c78fcf6b8b0d8802f7b8e76672512ffb727;hb=5db786e2dbbd927449a5ca95bfb277f851b678b6;hp=7462021a9d7bae989751a6eaee7f8b8ec45c0d61;hpb=3299d3eba008bfd2450d0f19d072126f98c78e1e;p=mailer.git diff --git a/inc/functions.php b/inc/functions.php index 7462021a9d..25ae3c78fc 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1187,15 +1187,21 @@ function TRANSLATE_YESNO($yn) // Deprecated : $length // Optional : $DATA // -function GEN_RANDOM_CODE($length, $code, $uid, $DATA="") -{ +function GEN_RANDOM_CODE($length, $code, $uid, $DATA="") { global $_CONFIG; + // Fix missing _MAX constant + if (!defined('_MAX')) define('_MAX', 15235); + // Build server string $server = $_SERVER['PHP_SELF'].":".getenv('HTTP_USER_AGENT').":".getenv('SERVER_SOFTWARE').":".getenv('REMOTE_ADDR').":".":".filemtime(PATH."inc/databases.php"); // Build key string - $keys = SITE_KEY.":".DATE_KEY.":".$_CONFIG['secret_key'].":".$_CONFIG['file_hash'].":".date("d-m-Y (l-F-T)", $_CONFIG['patch_ctime']).":".$_CONFIG['master_salt']; + $keys = SITE_KEY.":".DATE_KEY; + if (isset($_CONFIG['secret_key'])) $keys .= ":".$_CONFIG['secret_key']; + if (isset($_CONFIG['file_hash'])) $keys .= ":".$_CONFIG['file_hash']; + $keys .= ":".date("d-m-Y (l-F-T)", $_CONFIG['patch_ctime']); + if (isset($_CONFIG['master_salt'])) $keys .= ":".$_CONFIG['master_salt']; // Build string from misc data $data = $code.":".$uid.":".$DATA; @@ -1211,11 +1217,19 @@ function GEN_RANDOM_CODE($length, $code, $uid, $DATA="") // Calculate number for generating the code $a = $code + _ADD - 1; - // Generate hash with master salt from modula of number with the prime number and other data - $saltedHash = generateHash(($a % _PRIME).":".$server.":".$keys.":".$data.":".date("d-m-Y (l-F-T)", time()).":".$a, $_CONFIG['master_salt']); + if (isset($_CONFIG['master_hash'])) { + // Generate hash with master salt from modula of number with the prime number and other data + $saltedHash = generateHash(($a % _PRIME).":".$server.":".$keys.":".$data.":".date("d-m-Y (l-F-T)", time()).":".$a, $_CONFIG['master_salt']); - // Create number from hash - $rcode = hexdec(substr($saltedHash, strlen($_CONFIG['master_salt']), 9)) / abs(_MAX - $a + sqrt(_ADD)) / pi(); + // Create number from hash + $rcode = hexdec(substr($saltedHash, strlen($_CONFIG['master_salt']), 9)) / abs(_MAX - $a + sqrt(_ADD)) / pi(); + } else { + // Generate hash with "hash of site key" from modula of number with the prime number and other data + $saltedHash = generateHash(($a % _PRIME).":".$server.":".$keys.":".$data.":".date("d-m-Y (l-F-T)", time()).":".$a, substr(sha1(SITE_KEY), 0, 8)); + + // Create number from hash + $rcode = hexdec(substr($saltedHash, 8, 9)) / abs(_MAX - $a + sqrt(_ADD)) / pi(); + } // At least 10 numbers shall be secure enought! $len = $_CONFIG['code_length'];