Ben kuvvetle Unix sistemleri veya şifreler için bir entropi kaynağı olarak windows platformu üzerinde kripto-api on / dev / urandom hedefleme öneririz.
Ben sağlamalarının gerçekleştirilmesi önemi büyülü artan entropi cihazlar DEĞİLDİR herhelde. Bu şekilde bunları kötüye kullanmak hiç bu karma olmuştu önce tohum ve rand () verileri kullanılarak daha güvenli ve ben bu iyi bir fikir değil farkındayız eminim. Tohum iptal eder (deterministik mt_rand ()) ve böylece hiçbir nokta bile dahil olmak üzere tüm orada.
İnsanlar akıllı ve zeki olmak ve emeklerinin sonucu kırılgan sistemleri ve gereksiz tehlikeye kendi sistemlerinin güvenliğini ve (kötü tavsiye yoluyla) diğer sistemlerin güvenliğini koymak cihazlardır düşünüyorum.
İki yanlış bir doğru etmez. Bir sistem en zayıf parçası olarak sadece güçlü. Bu onu daha da güvensiz hale kabul etmek için bir lisans veya mazeret değildir.
İşte güvenli rasgele 128-bit dize elde etmek için bazı PHP kodu, gelen this comment at php.net by Mark Seecof:
Güvenlik ve şifreleme amaçlı bazı pseudorandom bit (yumurta, blok şifreleme için rasgele IV, parola karma için rastgele tuz) mt_rand () kötü bir kaynağıdır. Gerekiyorsa "en Unix / Linux ve / veya MS-Windows platformlarında alabilirsiniz Bu gibi işletim veya sistem kütüphaneden pseudorandom bit daha iyi bir notu:
<?php
// get 128 pseudorandom bits in a string of 16 bytes
$pr_bits = '';
// Unix/Linux platform?
$fp = @fopen('/dev/urandom','rb');
if ($fp !== FALSE) {
$pr_bits .= @fread($fp,16);
@fclose($fp);
}
// MS-Windows platform?
if (@class_exists('COM')) {
// http://msdn.microsoft.com/en-us/library/aa388176(VS.85).aspx
try {
$CAPI_Util = new COM('CAPICOM.Utilities.1');
$pr_bits .= $CAPI_Util->GetRandom(16,0);
// if we ask for binary data PHP munges it, so we
// request base64 return value. We squeeze out the
// redundancy and useless ==CRLF by hashing...
if ($pr_bits) { $pr_bits = md5($pr_bits,TRUE); }
} catch (Exception $ex) {
// echo 'Exception: ' . $ex->getMessage();
}
}
if (strlen($pr_bits) < 16) {
// do something to warn system owner that
// pseudorandom generator is missing
}
?>
NB: Her Kullanıcının diğer platform üzerinde sessizce başarısız olsa, / dev / urandom okuma girişimi ve kodunuzda CAPICOM erişmek için girişimi hem de bırakmak genellikle güvenlidir. Kodunuzu daha taşınabilir olacak şekilde orada ikisini de bırakın. "