Ben bir kriptografik güçlü rasgele sayı jeneratör kullanan PHP'nin rand()
fonksiyonu için bir değiştirilmesi gerekir.
openssl_random_pseudo_bytes()
function güçlü rasgele sayı üreteci için size erişim alır, ama bir bayt dize olarak verileri verir. Bunun yerine, 0 ve X arasında bir tamsayı gerekir.
Ben anahtar gerekir o zaman bunun üzerinde herhangi bir matematik yapabilirsiniz, bir tamsayı openssl_random_pseudo_bytes()
çıktısını almak hayal. Ben bir tamsayı bir bayt dize dönüştürme birkaç "kaba kuvvet" yollar düşünebilirsiniz, ama ben bir şey ... zarif için umuyordum.
Edit
angrychimp gelen öneri kullanarak, ben bir damla-in rand yerine () OpenSSL'yi oluşturduk. Ben kuşaklar için buraya ekleriz:
function crypto_rand($min,$max) {
$range = $max - $min;
if ($range == 0) return $min; // not so random...
$length = (int) (log($range,2) / 8) + 1;
$num = hexdec(bin2hex(openssl_random_pseudo_bytes($length,$s))) % $range;
return $num + $min;
}