openssl random pseudobytes - повторяется?

Я нашел эти openssl_random_pseudo_bytes функции с php.net.

function generate_password($length = 24) {

    if(function_exists('openssl_random_pseudo_bytes')) {
        $password = base64_encode(openssl_random_pseudo_bytes($length, $strong));
        if($strong == TRUE)
            return substr($password, 0, $length); //base64 is about 33% longer, so we need to truncate the result
    }

    # fallback to mt_rand if php < 5.3 or no openssl available
    $characters = '0123456789';
    $characters .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/+'; 
    $charactersLength = strlen($characters)-1;
    $password = '';

    # select some random characters
    for ($i = 0; $i < $length; $i++) {
        $password .= $characters[mt_rand(0, $charactersLength)];
    }        

    return $password;
}

Но Я хочу быть уверенным, является ли генерируемое им значение повторяемым или нет? Я ищу неповторимый результат.

Мне сказали, что значение из mt_rand () не повторяется? Но случайное число должно быть повторяемым, как это уже само объяснение - mt_ rand , не так ли?

РЕДАКТИРОВАТЬ:

, например, я только что протестировал его, и он сгенерировал W8hhkS + ngIl7DxxFDxEx6gSn . Но если будет сгенерировать то же значение снова в будущем - тогда оно повторяется .

0
задан laukok 25 February 2012 в 17:09
поделиться