downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

openssl_seal> <openssl_public_encrypt
Last updated: Fri, 13 Nov 2009

view this page in

openssl_random_pseudo_bytes

(PHP 5 >= 5.3.0)

openssl_random_pseudo_bytesYarı-rasgele dizge üretir

Açıklama

bool openssl_random_pseudo_bytes ( string $uzunluk , string $güçlü )

uzunluk karakterlik bir dizge döndürür. Ayrıca, ikinci değiştirgede bu yarı rasgele baytları üretmek için güçlü bir algoritma kullanılıp kullanılmadığı da belirtilecektir.

Değiştirgeler

uzunluk

İstenen dizgenin uzunluğu. Pozitif bir tamsayı olmalıdır. PHP, bu değiştirgeden bir pozitif tamsayı elde etmek için gerekli tür dönüşümünü yapacaktır.

güçlü

Güçlü bir algoritma kullanılmışsa bu değiştirgede TRUE döner. Bir hata oluşursa bu değer NULL olacaktır.

Dönen Değerler

İşlem başarılı olursa üretilen dizge, yoksa FALSE döner.

Örnekler

Örnek 1 - openssl_random_pseudo_bytes() örneği

<?php
for ($i = -1$i 5$i++) {
    
var_dump(bin2hex(openssl_random_pseudo_bytes($i$guclu)));
    
var_dump($guclu);
}

?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

string(0) ""
NULL
string(0) ""
NULL
string(2) "f6"
bool(true)
string(4) "8999"
bool(true)
string(6) "c202c9"
bool(true)
string(8) "45261b8f"
bool(true)



add a note add a note User Contributed Notes
openssl_random_pseudo_bytes
Tyler Larson
21-Aug-2009 10:18
Here's a drop-in replacement for rand() using OpenSSL as your PRNG:

<?php
   
function crypto_rand($min,$max) {
       
$range = $max - $min;
        if (
$range == 0) return $min; // not so random...
       
$length = (int) (log($range,2) / 8) + 1;
        return
$min + (hexdec(bin2hex(openssl_random_pseudo_bytes($length,$s))) % $range);
    }
?>
Tyler Larson
21-Aug-2009 09:29
If you don't have this function but you do have OpenSSL installed, you can always fake it:

<?php
   
function openssl_random_pseudo_bytes($length) {
       
$length_n = (int) $length; // shell injection is no fun
       
$handle = popen("/usr/bin/openssl rand $length_n", "r");
       
$data = stream_get_contents($handle);
       
pclose($handle);
        return
$data;
    }
?>

openssl_seal> <openssl_public_encrypt
Last updated: Fri, 13 Nov 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites