рдмрдбрд╝реА PHP рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдХрдИ рдХреЛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд░реНрд╡рд░ рдкрд░ рднреА рдкреНрд░рджрд░реНрд╢рди рдХреА рдХрдореА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЛрдб рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЯреБрдХрдбрд╝рд╛ рдкреВрд░реЗ рд╕рдВрд╕рд╛рдзрди рдХреЛ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рд▓рд╛рдн рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдФрд░ рдЗрд╕ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рд▓рд╛рдЧрдд рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВред рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреИрд░-рдорд╛рдирдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рдмрддрд╛рдКрдВрдЧрд╛ред
рдкреВрд░реЗ рд╡рд░реНрд╖ рдХреЗ рджреМрд░рд╛рди, рд╣рдордиреЗ рд▓рдЧрд╛рддрд╛рд░ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реА: рд╣рдордиреЗ рдЕрдзрд┐рдХ рдХреЛрдб рд▓рд┐рдЦрд╛, рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдП, рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдореЙрдбреНрдпреВрд▓, рд▓рд╛рдЦреЛрдВ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЯреЗрдмрд▓ рдЬреЛ рдХреНрд░реЙрд╕-рдЪрдпрди рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рддреЗрдЬ рдЧрддрд┐ рд╕реЗ рдмрдврд╝реАред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдмрджрд▓ рдЧрдИ рд╣реИ, рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдлрд┐рд░ рднреА рдЗрд╕рдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рднреА рдЬреЛрдбрд╝рд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рдХрд╛рдлреА рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛, рдЬреИрд╕рд╛ рдХрд┐ рдмрдбрд╝реА рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрдм рд╕рдм рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдЧреЗ рднреА рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдирд╛ рдЬрд╛рд░реА рд╣реИ, рдФрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рд░реАрдореЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдордп рдпрд╛ рдмрдЬрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ, рдореБрдЭреЗ рдЕрдЧрд▓рд╛ рдХрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рдЯрд┐рдХрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛: рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЬрд╛рдирдХрд╛рд░реА: рдЕрдВрддрд┐рдо рдирд╛рдо, рдкрддрд╛, рдлреЛрди рдирдВрдмрд░, рдкрд╣рдЪрд╛рди рдХреЛрдб - рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХреЗрд╡рд▓ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪреВрдВрдХрд┐ рдпрд╣ рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдореЗрдВ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЧрдВрднреАрд░ рдЕрдиреБрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ PHP рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП Google рдореЗрдВ рдЦреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЬрд╛рдиреЗ-рдкрд╣рдЪрд╛рдиреЗ mcrypt рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЖрдпрд╛ред рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рд╕рдордп рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ - рдордВрдЪреЛрдВ рдкрд░ рдЖрдк рдХрдИ рдЙрджрд╛рд╣рд░рдг, рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ, рдЪрд░реНрдЪрд╛рдПрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд░реНрд╢ рд╡рд┐рдХрд▓реНрдк рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдЦрд╛рд╕рдХрд░ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдмрд╣реБрдд рдХрдо рд╕рдордп рдерд╛ред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдВрдиреЗ рдЙрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬреЛ рд╕реАрдзреЗ mcrypt_encrypt рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рд╡рд░рдг рдкреГрд╖реНрда рдкрд░ рд╕реНрдерд┐рдд рд╣реИ:
http://us2.php.net/manual/en/function.mcrypt-encrypt.php<?php
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "This is a very secret key";
$text = "Meet me at 11 o'clock behind the monument.";
echo strlen($text) . "\n";
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
echo strlen($crypttext) . "\n";
?>
рд╕рдм рдХреБрдЫ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯреЗ BUT рдХреЛ рдЫреЛрдбрд╝рдХрд░: mcrypt_encrypt рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ 5th рдкреИрд░рд╛рдореАрдЯрд░ $ iv (рдЙрд░реНрдл IV рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╡реЗрдХреНрдЯрд░) рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдИрд╕реАрдмреА (
рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдХреЛрдбрдмреБрдХ ) рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдореЛрдб рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЖрд╢реНрдЪрд░реНрдп рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдХреНрдпреЛрдВ рдореМрдЬреВрдж рд╣реИ - рдпрд╣ рднреНрд░рд╛рдордХ рд╣реИред
рд╣рдорд╛рд░реЗ рдЗрдВрдЬреАрдирд┐рдпрд░ рд▓реАрдб рдиреЗ рдПрдХ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреА, рдФрд░ рджреЛ рддрд░реНрдХрдпреБрдХреНрдд рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдХреАрдВ:
- IV рдХрд╛ рдЙрдкрдпреЛрдЧ рдИрд╕реАрдмреА рдореЛрдб рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ) - рдпрд╣ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ, рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред
- mcrypt рдмрд╣реБрдд рднрд╛рд░реА рдФрд░ рдзреАрдорд╛ рд╣реИ, рдЗрд╕реЗ рд╣рд░ рдкреГрд╖реНрда рд▓реЛрдб рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдвреВрдВрдврдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдЬрд╣рд╛рдВ рдЗрд╕ рдбреЗрдЯрд╛ рдХреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕реЗ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВред
рдкрд╣рд▓реА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдЧреЗ Google, рддреБрд░рдВрдд CBC (
рд╕рд┐рдлрд░-рдмреНрд▓реЙрдХ рдЪреЗрдирд┐рдВрдЧ ) рдореЛрдб рдкрд░ рдареЛрдХрд░
рдЦрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ - рдЖрдЦрд┐рд░рдХрд╛рд░, рдЖрдкрдХреЛ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдирд╛рдо рд╕рд╛рдЗрдЯ рдХреЗ рд▓рдЧрднрдЧ рд╣рд░ рдкреГрд╖реНрда рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рд╕рдордп, рдЬреЛрдЦрд┐рдореЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП - рдЖрдЦрд┐рд░рдХрд╛рд░, рдХреНрдпреВрдП рдЕрднреА рднреА рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдПрдХ рд╢рд╛рдо, рдХрд╛рдо рд╕реЗ рдЬреБрдбрд╝реА рджреИрдирд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛, рдПрдХ рдРрд╕реЗ рджреЛрд╕реНрдд рдХреЗ рд╕рд╛рде рдмреАрдпрд░ рдкреАрдирд╛ рдЬреЛ рдкреАрдПрдЪрдкреА рдФрд░ "рдЗрди" рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рджреВрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рд╕реА ++ рдореЗрдВ рдмрд╣реБрдд рдЕрдиреБрднрд╡реА рд╣реИ - рдпрд╣ рди рдХреЗрд╡рд▓ рдПрдХ рд╕реБрдЦрдж рд╢рдЧрд▓ рдмрди рдЧрдпрд╛, рдмрд▓реНрдХрд┐ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рднреА рд╣реИ рдХрд╛рдо рдХреЗ рд▓рд┐рдПред
рдЙрд╕рдиреЗ рдореБрдЭреЗ рдПрдХ рд░рд╣рд╕реНрдп рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд░рд╣рд╕реНрдп рдерд╛, рд▓реЗрдХрд┐рди C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ): рдпрджрд┐ рдЖрдк рдХреБрдЫ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ 10 рдЧреБрдирд╛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдирдпрд╛ рдЗрдВрдЯреЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд╣рд▓реЗ рд╕реЗ рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ -
рдПрдбрд╡рд╛рдВрд╕реНрдб рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╕реНрдЯреИрдВрдбрд░реНрдб (AES) рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рд╕реЗрдЯ ред рдФрд░ рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЗрдВрдЯреЗрд▓ рдПрдХреНрд╕реЙрди E5645 рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпреЗ рдирд┐рд░реНрджреЗрд╢ (
рдПрдИрдПрд╕ рдирдП рдирд┐рд░реНрджреЗрд╢ ) рд╣реИрдВред
рд▓реЗрдХрд┐рди PHP рдореЗрдВ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ?
рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ PHP рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЬреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ PHP рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ / рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдореВрд▓реНрдп рд▓реЗрдЧрд╛ред рдХрдИ рд░рд╛рддреЛрдВ рдХреА рдиреАрдВрдж рдХреЗ рдмрд╛рдж, рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рддреБрд▓рдирд╛ - рдореЙрдбреНрдпреВрд▓ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХрд╣рд╛рдВ рдФрд░ рдХреИрд╕реЗ рд╡реЗрдХреНрдЯрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ) - рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдХрд▓рд╛ рд╣реИред
PHP рдореЙрдбреНрдпреВрд▓, рджреЛ рднрд╛рдЧреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░:
- рдмреЛрдЯрди ( http://botan.randombit.net/ ) C ++ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдПрдХ рдЦреБрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ AES256 рд╕рд╣рд┐рдд рдХрдИ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде AES-NI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред
- libaecrypt - рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░рд╛ рд╣рд┐рд╕реНрд╕рд╛ - рдмреЛрдЯрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ C ++ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП C рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдлрд╝рдВрдХреНрд╢рдВрд╕, рдХреНрд▓рд╛рд╕ рдирд╣реАрдВ) рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдбрд╛рдкреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреА рдореБрдЦреНрдп рд╕реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореЙрдбреНрдпреВрд▓ рдореЗрдВ, рд╣рдордиреЗ рддреАрди рдХрд╛рд░реНрдп рдХрд┐рдП:
- рд░реИрдВрдбрдо рдХреА рдЬреЗрдирд░реЗрдЯрд░ - рдПрди рдмрд╛рдЗрдЯреНрд╕ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рд░реИрдВрдбрдо рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХреБрдВрдЬреА рдпрд╛ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди
- рдкреНрд░рддрд┐рд▓рд┐рдкрд┐
рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди / рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди - рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
- рдбреЗрдЯрд╛ рдХреБрдВрдЬреА - 32 рдмрд╛рдЗрдЯреНрд╕, рдЬреЛ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдИ рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЫрд┐рдкреА рд╣реБрдИ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
- рд╕рджрд┐рд╢ рдХреБрдВрдЬреА 32 рдмрд╛рдЗрдЯреНрд╕ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЫрд┐рдкреЗ рд╣реБрдП рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
- IV - 16 рдмрд╛рдЗрдЯреНрд╕, рдЬреЛ "рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреБрдВрдЬреА рдЬрдирд░реЗрдЯрд░" рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ IV рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ рдбреЗрдЯрд╛ рдХреБрдВрдЬреА рдФрд░ IV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рд╡реЗрдХреНрдЯрд░ рдХреЛ рд╡реЗрдХреНрдЯрд░ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╡реЗрдХреНрдЯрд░ рдХреЛ рд╡рд┐рднрд╛рдЬрдХ # рдХреЗ рд╕рд╛рде рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмреЙрдЯрди рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛:
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХрд┐рд╕реА рд▓реЗрдЦ рдореЗрдВ рдХреЛрдб рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдЙрдЪрд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛, рдЬреЛ рдХрд┐ рд░рд╕ рд╣реА рд╣реИред
рдмреЙрдЯрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг, рдПрдХ рд╕рд╣рд╛рдпрдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рдЙрд╕рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ (рд╡рдирд╕реНрдкрддрд┐ / рд╕реАрдкреАрдпреВ.рдПрдЪ) рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди / рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдПрдИрдПрд╕-рдПрдирдЖрдИ рд╣реИ; рдпрджрд┐ рдирд╣реАрдВ, рддреЛ SSSE3 рд╣реИред
int Init()
{
//
pInitObj = new Botan::LibraryInitializer();
//
CPUID::initialize();
//
if(CPUID::has_aes_ni())
global_state().algorithm_factory().set_preferred_provider("AES-256", "aes_isa");
else if(CPUID::has_ssse3())
global_state().algorithm_factory().set_preferred_provider("AES-256", "simd");
else
global_state().algorithm_factory().set_preferred_provider("AES-256", "core");
return 1;
}
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЕрдкрд╛рдЪреЗ рд▓реЛрдб рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдЯреВрд▓, рдЕрдм (рдЕрдкрд╛рдЪреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ), рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдФрд░ mcrypt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛: рд▓рдЧрднрдЧ 600 рдЕрдиреБрд░реЛрдз / рджреВрд╕рд░рд╛ рдмрдирд╛рдо 1400 рдЕрдиреБрд░реЛрдз / рджреВрд╕рд░рд╛ рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкрдХреНрд╖ рдореЗрдВред
рдирд┐рд╖реНрдХрд░реНрд╖:
OpenSSL, рдЬреЛ PHP рдХреЗ рд╕рд╛рде рднреА рдЖрддрд╛ рд╣реИ, рд╕рдВрд╕реНрдХрд░рдг 1.0.1 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, 14 рдорд╛рд░реНрдЪ 2012 рдХреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ (рд╣рдорд╛рд░реЗ рд╕рднреА рдкреАрдбрд╝рд╛ рдХреЗ рдмрд╛рдж), рдкрд╣рд▓реЗ рд╕реЗ рд╣реА AES-NI (рдФрд░ SSSE3) рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рдирддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ PHP рдореЗрдВ рд▓рд┐рдЦрд╛ рдПрдХ рд╕рдорд╛рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо c рдУрдкрдирдПрд╕рдПрд╕рдПрд▓, рдХреЗрд╡рд▓ 200 рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╣реАрди (
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдПрдИрдПрд╕ рдирд┐рд░реНрджреЗрд╢ рд╕реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ , рд╕рдВрд╕реНрдХрд░рдг 1.0.1 рд╕реЗ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рд╕реВрдЪреА рдореЗрдВ рд╣реИ)ред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ MCrypt рдХреЗ рдмрдЬрд╛рдп OpenSSL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ mcrypt рдзреАрдорд╛ рд╣реИ, рдЗрд╕реЗ рдЖрд░рдВрднрд┐рдХ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ
32-рдмрд╛рдЗрдЯ рдХреБрдВрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
! - рдЬреЛ рдХрд┐ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓, рдмреЛрдЯрди рдХреЗ рдмрд╛рдж рд╕реЗ рдХрд╛рдлреА рдорд╛рдирдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдПрдИрдПрд╕ 256-рд╕реАрдмреАрд╕реА рдореЛрдб рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп IV рдХреЗ рд▓рд┐рдП
16-рдмрд╛рдЗрдЯ рдХреБрдВрдЬреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк mcrypt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЗрд╡рд▓ рд╡реЗ рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
-
UPD1: рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдФрд░ рдореЗрд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ
рдмрд╛рд░реЗ рдореЗрдВ : рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдЕрдиреБрдмрдВрдз рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдП рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рд╣рдо 100 рд╣рдЬрд╛рд░ рдЕрдореЗрд░рд┐рдХреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред рд▓реЗрдХрд┐рди рдЖрдЬ рдореИрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдмрд┐рдЫрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рддрд╛рдХрд┐ рдЕрдиреБрдмрдВрдз рдХреА рд╢рд░реНрддреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рди рд╣реЛред
UPD2: рдореИрдВ рдХрд░реНрдо рдореЗрдВ рддреЗрдЬ рдирдХрд╛рд░рд╛рддреНрдордХ рдФрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рд╕реЗ рд╣реИрд░рд╛рди рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рдореИрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрджрд┐ рдЖрдк PHP рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ mcrypt рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред Php рдмрдВрдбрд▓ рднреА OpenSSL рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 1.0.1 (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ), рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд░рддрд╛ рд╣реИред рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рд░рд┐рд╣рд╛рдИ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░рд╛ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдореЙрдбреНрдпреВрд▓ рдЕрдм рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕рдХреА рд░рд┐рд▓реАрдЬ рд╕реЗ рдкрд╣рд▓реЗ рдерд╛, рдФрд░ рдлрд┐рд░ рд╕реЗ рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рдХрдо рд╕рдордп рдерд╛ред
UPD3: рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ 25k рдкреГрд╖реНрда рджреГрд╢реНрдп рдФрд░
рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдПрдВ рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдирд╣реАрдВ рд╣реИрдВ, рдХреГрдкрдпрд╛ рдореЗрд░реЗ рдЕрдиреБрднрд╡ рд╕реЗ рдореБрдЦреНрдп рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ: рдПрдИрдПрд╕-рдПрдирдЖрдИ (рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢) рдФрд░ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдмрдирд╛рдоред Mcryptред рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреА рд░рд╛рдп рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдПрдИрдПрд╕-рдПрдирдЖрдИ, рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдмрдирд╛рдо рдкрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рд▓реЗрдЦ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред MCrypt рдФрд░ PHP рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред