
рдпрд╣ рд▓реЗрдЦ рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ (PRNGs) рдХреА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рджреВрд╕рд░рд╛ рд╣реИред
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдХрдИ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдиреЗ рдкреНрд░рдХрдЯ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдмрд╣реБрдд рдореВрд▓ рдмрд╛рддреЗрдВ ([1]) рд╕реЗ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рддрдХ рдкреАрдЖрд░рдПрдирдЬреА рдХреА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рд╣реИ рдФрд░ рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реАрдПрдордПрд╕ рдФрд░ рдЕрдиреНрдп рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ ([реи], [рей], [рек] )ред
рдпреЗ рдкреНрд░рдХрд╛рд╢рди рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ PRNG рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдХрдИ рдкрд╣рд▓реБрдУрдВ рдХреА рдиреАрдВрд╡ рд╣реИред рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрджреНрдо рдЖрдпрд╛рдореА рд╕рдВрдЦреНрдпрд╛ / рд╡рд░реНрдг рдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рд╡рд┐рднрд┐рдиреНрди рдЯреЛрдХрди рдХреА рдкреАрдврд╝реА (рд╕реАрдПрд╕рдЖрд░рдПрдл, рдкрд╛рд╕рд╡рд░реНрдб рд░реАрд╕реЗрдЯ рдЯреЛрдХрди, рдЖрджрд┐);
- рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд╛рд╕рд╡рд░реНрдб рдкреАрдврд╝реА;
- рдХреИрдкреНрдЪрд╛ рдореЗрдВ рдкрд╛рда рдкреАрдврд╝реА;
- рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ред
рдПрдХ
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ ,
рдЬреЙрд░реНрдЬ рдЕрд░рдЧрд┐рд░реЛрд╕ рдФрд░
рдПрдЧреЗрд▓реЛрд╕ рдХрд┐рдпрд┐рдпрд╕ ([3]) рдХреЗ рд╢реЛрдз рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдордиреЗ
PHPSESSID рдХреЗ рдЖрдзрд╛рд░ рдкрд░ PHP рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдирд╛ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЫрджреНрдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдПрдиреНрдЯреНрд░рд╛рдкреА рдХреЛ рдХрдо рдХрд░рдирд╛ рд╕реАрдЦрд╛ред
рдЕрдм рд╣рдо рдкрд╛рдпрдерди рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ PRNG рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред
рдкрд╛рдпрдерди PRNG рд╕реБрд╡рд┐рдзрд╛рдПрдБ
рдкрд╛рдпрдерди рдореЗрдВ рддреАрди рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ рдЬреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ / рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ:
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ ,
рдпреВрд░реЗрдирд┐рдпрдо рдФрд░
_random :
- _random рд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдорд╛рдореВрд▓реА рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд╕рд╛рде Mersenne рдЯреНрд╡рд┐рд╕реНрдЯрд░ (MT) рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо ( [6], [7] ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ;
- рдЙрд░реЛрдЬреЗрди рд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдПрдиреНрдЯреНрд░рд╛рдкреА рдХреЗ рдмрд╛рд╣рд░реА рд╕реНрд░реЛрддреЛрдВ (рдХреНрд░рд┐рдкреНрдЯрдЧреНрд░реЗрдирд░реЗрдиреНрдЬ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рджрд╛рддрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ;
- рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд╛рдпрдерди рдореЗрдВ _random рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рд╣реИ рдЬреЛ рджреЛрдиреЛрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рджреЛ рдкреНрд░рдореБрдЦ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЫрджреНрдо рдЖрдпрд╛рдореА рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ: рдпрд╛рджреГрдЪреНрдЫрд┐рдХ () рдФрд░ SystemRandom ()ред
рд░реИрдВрдбрдо ()
рдкрд╣рд▓рд╛ рдПрдордЯреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (
_random рдореЙрдбреНрдпреВрд▓) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдЗрд╕реЗ
рдпреВрд░реЗрдирд┐рдпрдо рд╕реЗ рд▓реА рдЧрдИ
SEED рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ PRNG рдХреЛ RNG (рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░) рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк
рдпреВрд░реЗрдирд┐рдпрдо рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
/ dev / urandom рдЧрд╛рдпрдм рд╣реИ рдпрд╛ рдЖрдк
advapi32.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рддреЛ
int (time.time () * 256) SEED рдХреЗ рд░реВрдк
рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ) рдЕрдкрд░реНрдпрд╛рдкреНрдд рдПрдиреНрдЯреНрд░рд╛рдкреА)ред
SYSTEMRANDOM ()
SystemRandom () рдЙрд░реБрдЧреНрд╡реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
MT рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдпрд╣ рд╣реИ рдХрд┐ PRNG
рд░рд╛рдЬреНрдп рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ 624 рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рд╣реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрдЬрд╛рдп, рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
random_random() { unsigned long a=genrand_int32(self)>>5, b=genrand_int32(self)>>6; return PyFloat_FromDouble((a*67108864.0+b)*(1.0/9007199254740992.0)); }
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, PHP рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрдирд░реЗрдЯрд░ рдХреЛ рди рдХреЗрд╡рд▓ рдПрдХ
рд▓рдВрдмреЗ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдХрд┐рд╕реА рднреА рдЕрдиреБрдХреНрд░рдо (
init_by_array () рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдВрдЯреНрд░реЛрдкреА рдХреЗ рдмрд╛рд╣рд░реА рд╕реНрд░реЛрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (32 рдмрд╛рдЗрдЯреНрд╕ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)
рдпреВрд░реЗрдирд┐рдпрдо рд╕реЗ ), рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛрддрд╛ рд╣реИ,
рд╕рдордп () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ :
if a is None: try: a = int.from_bytes(_urandom(32), 'big') except NotImplementedError: import time a = int(time.time() * 256)
рд╕реБрд░рдХреНрд╖рд╛
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдмрджрд▓рд╛рд╡, PHP рдХреЗ рд╡рд┐рдкрд░реАрдд,
random.random () рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рднреА рдкрд░реНрдпрд╛рдкреНрдд рдЬрдирд░реЗрдЯрд░ рдПрдиреНрдЯреНрд░рд╛рдкреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ "рдмреБрд░рд╛" рдирд╣реАрдВ рд╣реИред
рдкрд╛рдпрдерди рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ PHP рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкрд╛рдпрдерди рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд░ рдЪрд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░рд╛рдЬреНрдп рдХрд╛ рдЖрд░рдВрднреАрдХрд░рдг рдПрдХ рдмрд╛рд░ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм
рдЖрдпрд╛рдд рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдЬрдм
random.seed () рдордЬрдмреВрд░ рд╣реЛрддрд╛ рд╣реИ (рдпрд╣ рдЕрддреНрдпрдВрдд рд╣реИ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рджреБрд░реНрд▓рдн рдорд╛рдорд▓рд╛), рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдордЯреА рд░рд╛рдЬреНрдпреЛрдВ рдкрд░ рд╣рдорд▓реЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- рд╣рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд┐рд▓рддреА рд╣реИ рдЬреЛ рдХрд┐ random.random () рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ Plone рдпрд╣ рддреНрд░реБрдЯрд┐ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ (рдлрд╝рд╛рдЗрд▓ SiteErrorLog.py ) рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╣ рдкреГрд╖реНрда рдкрд░ " рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдПрдХ рддреНрд░реБрдЯрд┐ *** рдлрд┐рдХреНрд╕реНрдб " рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИ);
- рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рд╣рдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреБрд░реЛрдз рд╕рдВрдЦреНрдпрд╛: 1,2,199,200,511,625 ;
- 313 рд╡реЗрдВ рдЕрдиреБрд░реЛрдз рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо рдПрдХ рдкреВрд░реНрд╡рд╛рдиреБрдореЗрдп рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рд╕рд╡рд░реНрдб рд░реАрд╕реЗрдЯ рд▓рд┐рдВрдХ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛);
- 1,199 рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ , рд╣рдо рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рд░рд╛рдЬреНрдп 1 [1], рд░рд╛рдЬреНрдп_1 [2], рд░рд╛рдЬреНрдп_1 [397] ;
- 2,200 рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд - State_1 [3], state_1 [398] ;
- рдЕрдиреБрд░реЛрдз рдХреЗ рдЖрдзрд╛рд░ рдкрд░ 511 - state_2 [397] ;
- рдЕрдиреБрд░реЛрдз рдкрд░ рдЖрдзрд╛рд░рд┐рдд 625 - рд░рд╛рдЬреНрдп_3 [1] ред
рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдг рдХреА рд╕рдЯреАрдХрддрд╛ рд░рд╛рдЬреНрдп рддрддреНрд╡ (
i ) рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ:
i mod 2 = 0 рдХреЗ рд▓рд┐рдП, рдПрдВрдЯреНрд░реЙрдкреА
2 ^ 6 рд╣реИ ,
i mod 2 = 1 - 2 ^ 5 рдХреЗ рд▓рд┐рдП ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдорджрдж рд╕реЗ
1,2,199,200 рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рд░рд╛рдЬреНрдп
1 [1] ,
рд░рд╛рдЬреНрдп_1 [2] ,
рд░рд╛рдЬреНрдп_1 [3] ,
рд░рд╛рдЬреНрдп_1 [397] ,
рд░рд╛рдЬреНрдп_1 [398] , рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░рд╛рдЬреНрдп
state_2 [1] рдФрд░
рд░рд╛рдЬреНрдп_2 [2] рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛
313 рдХреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдПрдиреНрдЯреНрд░рд╛рдкреА
2 ^ 24 (16M) рд╣реИ ред
511 рдФрд░
625 рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдиреНрдЯреНрд░рд╛рдкреА рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЗ
рдХреНрд╡реЗрд░реАрдПрдБ state_2 [397] ,
state_3 [1] рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИрдВред рдпрд╣ рд░рд╛рдЬреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ
2 ^ 8 рддрдХ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдХреНрд╡реЗрд░реА
рдирдВрдмрд░ 313 рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП "рдпрд╛рджреГрдЪреНрдЫрд┐рдХ" рдирдВрдмрд░ рдХреЗ рдХреБрд▓
256 рд╡реЗрд░рд┐рдПрдВрдЯ рд╣реИрдВред
рдПрдХ рд╣рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд░реНрдд рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдХреНрд╡реЗрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ PRNG рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреА рд╣реИ (рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдХрд┐ рд░рд╛рдЬреНрдп рд╕реВрдЪрдХрд╛рдВрдХ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред рдпрд╣ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз
рдирдВрдмрд░ 1 PRNG рдХреЗ рд░рд╛рдЬреНрдп рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ
224 рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдЕрдиреБрд░реЛрдз
рдирдВрдмрд░ 200 рдЬрдирд░реЗрдЯрд░ рдХреЗ рдПрдХ рдЕрд▓рдЧ рд░рд╛рдЬреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдЬреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред рдЗрд╕ рдШрдЯрдирд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛
36% рд╣реИ ред
рдЗрд╕рд▓рд┐рдП, рдЕрдиреБрд░реЛрдз
рд╕рдВрдЦреНрдпрд╛ 625 рдХрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реЗ рд╕рднреА рдЕрдиреБрд░реЛрдз рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рдХрд┐рдП рдЧрдП рдереЗ рдФрд░ рдХреЛрдИ рднреА рдЕрдиреБрд░реЛрдз рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рдПрдХ
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рддреЗ рд╣реИрдВ рдЬреЛ 6 рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рдЕрдиреБрд░реЛрдз
рд╕рдВрдЦреНрдпрд╛ 313 рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирдВрдмрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред
рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ
рд╣рдордиреЗ рдХрдИ рдкрд╛рдпрдерди рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдЙрдирдХреЗ рдмреАрдЪ рдкреНрд▓реЛрди рдФрд░ Django) рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, (рдФрд░ рд╢рд╛рдпрдж рд╕реМрднрд╛рдЧреНрдп рд╕реЗ) рдЙрдирдХреЗ рдмреАрдЪ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред
рд╕рдмрд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдореНрдореАрджрд╡рд╛рд░ рдкреНрд▓реЙрди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ (
SiteErrorLog.py ) рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░ рд╣рдорд▓рд╛ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред
рдкреНрд▓реЙрди рдкрд╛рдпрдерди 2.7 рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
ред * , рдЬреЛ, рдЬрдм
рдлреНрд▓реЛрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП
str () рд╣реИ, рдкрд┐рдЫрд▓реЗ 5 рдЕрдВрдХреЛрдВ рдХреЛ рдХрд╛рдЯрддрд╛ рд╣реИ, рдЬреЛ iterated рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рджреЛрдиреЛрдВ рд╕реНрдерд╛рдиреАрдп рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП) рдХреЛ рдмрд╣реБрдд рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рддреАрд╕рд░реА рд╢рд╛рдЦрд╛ рдХрд╛ рдкрд╛рдпрдерди
рд╕реЗрдВрдЯ () рдЖрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ
рдлреНрд▓реЛрдЯ рдХреЛ рдирд╣реАрдВ рдХрд╛рдЯрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдкрд░ рд╣рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рджрд╛рд╡реЗрджрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред
рд╣рдо рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рдПрдХ
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЗрдирдкреБрдЯ рдкрд░ 6 рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрд╡рд╢реНрдпрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд░рд╛рдЬреНрдп рджреНрд╡рд╛рд░рд╛ рд╢реБрд░реВ рдХреА рдЬрд╛рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ vuln.py), рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдпрд╣ рдЪрдпрдирд┐рдд рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡реЗрд░рд┐рдПрдВрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдФрд╕рдд рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рд░рдирд┐рдВрдЧ рд╕рдордп рд▓рдЧрднрдЧ рдПрдХ рдШрдВрдЯреЗ рд╣реИред
рдиреЛрдЯ: рдпрд╣ рдкрд░рд┐рджреГрд╢реНрдп (i mod 2 = 1) рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреНрдп рддрддреНрд╡ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рджрдХреНрд╖рддрд╛ 36% рд╕реЗ рдШрдЯрдХрд░ 18% рд╣реЛ рдЬрд╛рддреА рд╣реИредрдирд┐рд╖реНрдХрд░реНрд╖
рдкрд╛рдпрдерди рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛрдб (рд╡реЗрдм тАЛтАЛрд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░) рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдЙрди рд╣рдорд▓реЛрдВ рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдЬреЛ PHP рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдпрд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред PRNG рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рд╕рд░рд▓ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдпрд╛ рд░реИрдВрдбрдо.рд╕рд┐рд╕реНрдЯрдорд░реИрдВрдбрдо () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ;
- рд░реИрдВрдбрдо.рд╕реЗрдб () рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ random.random () рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд SEED рдПрдиреНрдЯреНрд░рд╛рдкреА (рдпрджрд┐ рдпреВрд░реЗрдирд┐рдпрдо рдХрд╛ рдореЙрдбреНрдпреВрд▓ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдорд╛рди md5 (time.time () *) (int) salt1 + str (salt2) )) , рдЬрд╣рд╛рдВ рдирдордХ 1 рдФрд░ рдирдордХ 2 рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рдЖрд░рдВрднреАрдХреГрдд рд╣реЛрддреЗ рд╣реИрдВ );
- рдЕрдкрдиреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреЛ рд╕реАрдорд┐рдд рдХрд░реЗрдВ (рдмрд╕ md5 рдЬреИрд╕реЗ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ)ред
рд╕рдВрджрд░реНрдн
[рез]
http://habrahabr.ru/post/151187/[реи]
http://jazzy.id.au/default/2010/09/20/cracking_random_number_generators_part_1.html[рей]
http://crypto.di.uoa.gr/CRYPTO.SEC/Randomness_Attacks_files/paper.pdf[рек]
http://www.slideshare.net/d0znpp/dcg7812-cryptographyinwebapps-14052863[рел]
http://media.blackhat.com/bh-us-10/pretations/Kamkar/BlackHat-USA-2010-Kamkar-How-I-Met-Your-Girlfriend-slides/pdf[рем]
http://en.wikipedia.org/wiki/Mersenne_twister[[]
Http://jazzy.id.au/default/2010/09/22/cracking_random_number_generators_part_3.htmlрд▓реЗрдЦрдХ: рдпреВрдиреБрд╕реЛрд╡ рддреИрдореВрд░