04.05.2010 11:53
1
Trochu jsem se dostal ke generátoru náhodných čísel v PHP a potřeboval bych pustit následující skript na serveru s Windows a PHP (klidně zkoušejte i na jiných kombinacích):

PHP kód:
<?php
header
("Content-type: image/png");
$im imagecreatetruecolor(5121024)
    or die(
"GD");
$white imagecolorallocate($im255255255);
for (
$y=0$y<512$y++) {
    for (
$x=0$x<512$x++) {
        if (
rand(0,1) === 1) {
            
imagesetpixel($im$x$y$white);
        }
        if (
mt_rand(0,1) === 1) {
            
imagesetpixel($im$x$y+512$white);
        }
    }
}
imagepng($im);
imagedestroy($im);

?>
Pokud se vám tam někomu objeví viditelný vzor (mohl by), pošlete prosím obrázek sem + stručnou konfiguraci (verzi PHP+Windows včetně SP a případného specializovaného HW na šifrování).

Díky.

Relativně náhodný obrázek vypadá takhle:
http://i41.tinypic.com/nzpzy0.jpg

Teoreticky pod Windows (teoreticky, nemám tady nikde rozumně běhající Windows server) je generátor náhodných čísel hodně slabý.
04.05.2010 12:45
2
Windows 7, PHP 5.2 ide cez IIS ak sa nemýlim.

Přiložené obrázky
rand.jpg
(88,3 KB, 32 zobrazení)
04.05.2010 15:06
3
Původně odeslal Santas
Windows 7, PHP 5.2 ide cez IIS ak sa nemýlim.
Hm, tak nejspíš ve Windows 7 už je to lepší, otázka je, co Win2k/2003/XP...
04.05.2010 15:52
4
hehe dobry tema

dulezite je jak je realizovan generator nahodnych cisel v PHP, ruzne platformove implementace pouzivaj ruzne metody na generovani nahodnych cisel.
co si pamatuju ze zdrojaku PHP tak se jednalo o bezne matematicke funkce takze myslim ze rozdil na ruznych platformach bude v kompilatoru kodu a vlasntostech integer ..
04.05.2010 16:10
5
Původně odeslal isgroup
hehe dobry tema

dulezite je jak je realizovan generator nahodnych cisel v PHP, ruzne platformove implementace pouzivaj ruzne metody na generovani nahodnych cisel.
co si pamatuju ze zdrojaku PHP tak se jednalo o bezne matematicke funkce takze myslim ze rozdil na ruznych platformach bude v kompilatoru kodu a vlasntostech integer ..
Právě že ne - rand() si v PHP bere náhodná čísla snad přímo ze systému, a tam (údajně, nemám teď úplně čas instalovat xkrát Windows) v PHP není používaný kryptograficky bezpečný generátor (respektive používá se rand() z libc, takže buhví co pod Wndows). Zaručeně bezpečný (ve smyslu "celkem to jde", neřešme co je bezpečné :-) ) je jen přes mt_rand().

Něco takovéhleho leze z *některých* verzí Windows (nevím ze kterých):
http://www.boallen.com/assets/images...p_computer.png
04.05.2010 22:58
7
Původně odeslal Pooky
Windows XP
To je přesně ono, díky moc. Ještě kdyby měl někdo Windows 2003 / Vista, aby bylo jasné, kde to končí...
04.05.2010 23:03
8
win 2003 ma jadro xpcek, pochybuji ze tam bude nejaky rozdil :) vista ma zas stejne jadro jako win 7 takze taky pochybuju ze tam bude oproti sedmicce nejaky rozdil
04.05.2010 23:19
9
http://imghost.sk/image/324039-Snmka.png
Apache/2.0.63 (Win32) PHP/5.2.6
Windows 7 Ultimate
04.05.2010 23:34
10
Odpověď může být WinXP SP3?

Microsoft confirms that XP contains random number generator bug
In addition, Microsoft said Windows XP Service Pack 3 (SP3), a major update expected sometime in the first half of 2008, includes fixes that address the random number generator problem.
05.05.2010 00:41
11
Původně odeslal PeterM
Apache/2.0.63 (Win32) PHP/5.2.6
Windows 7 Ultimate
zajimave ze cloveku nahore to nedela... ze by byl rozdil mezi apache a IIS?
05.05.2010 12:37
12
mne to pod XP SP3 a apache 2.2 PHP 5.1.2 ide rovnako zle...

http://test.latimeria.sk/win32_php_rand.png

ale s mt_rand() uz OK

http://test.latimeria.sk/win32_php_mt_rand.png
05.05.2010 12:43
13
Původně odeslal mayo
mne to pod XP SP3 a apache 2.2 PHP 5.1.2 ide rovnako zle...
sis jeste nestacil vsimnout ze ten prvni obrazek obsahuje jak rand tak mt_rand takze tvuj druhy obrazek postrada jakykoliv smysl?
05.05.2010 12:45
14
hhh nestacil veru sry! :D to vies ked le clovek v praci a webtrh cita lavym okom... ;)

aj sa mi zdalo divne ze by sa rand() v polovici obrazku napravil
11.05.2010 22:54
15
Win 2008 + PHP 5.2.6

Přiložené obrázky
a.jpg
(88,5 KB, 12 zobrazení)