<?php 
/** 
 * This file is a part of the phpMussel package. 
 * Homepage: https://phpmussel.github.io/ 
 * 
 * PHPMUSSEL COPYRIGHT 2013 AND BEYOND BY THE PHPMUSSEL TEAM. 
 * 
 * Authors: 
 * @see PEOPLE.md 
 * 
 * License: GNU/GPLv2 
 * @see LICENSE.txt 
 * 
 * This file: Polyfills for PHP 5.4.X (last modified: 2017.10.26). 
 */ 
 
if (!defined('PASSWORD_BCRYPT')) { 
    define('PASSWORD_BCRYPT', 1); 
} 
 
if (!defined('PASSWORD_DEFAULT')) { 
    define('PASSWORD_DEFAULT', PASSWORD_BCRYPT); 
} 
 
if (!function_exists('password_hash')) { 
    function password_hash($Password, $Algo, array $Options = []) { 
 
        $Cost = empty($Options['cost']) ? 10 : (int)$Options['cost']; 
 
        if (empty($Options['salt'])) { 
 
            if ($Algo === 1) { 
                $CostLen = strlen($Cost); 
                if ($Cost < 4) { 
                    $Cost = 4; 
                } 
                if ($Cost > 31 || $CostLen > 2) { 
                    $Cost = 31; 
                } elseif ($CostLen < 2) { 
                    $Cost = '0' . $Cost; 
                } 
                $Salt = '$2y$' . $Cost . '$'; 
                $Length = 22; 
                $Range = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; 
                while ($Length--) { 
                    $Salt .= str_shuffle($Range)[0]; 
                } 
            } 
 
            else { 
                $Salt = ''; 
            } 
 
        } else { 
            $Salt = (string)$Options['salt']; 
        } 
 
        return crypt($Password, $Salt); 
 
    } 
} 
 
if (!function_exists('password_verify')) { 
    function password_verify($Password, $Hash) { 
        return (!empty($Password) && !empty($Hash) && $Hash === crypt($Password, $Hash)); 
    } 
} 
 
 |