PHP 5.5 "рдкрд╛рд╕рд╡рд░реНрдб рд╣реИрд╢рд┐рдВрдЧ рдПрдкреАрдЖрдИ"

рдЗрд╕рд▓рд┐рдП PHP 5.5.0 рдХреА рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬрд╝ рд╕рд╛рдордиреЗ рдЖрдИред рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкреЛрд╕реНрдЯ рдпрд╛ "рд░реВрд╕реА рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд" рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

PHP 5.5.0 рдХреА рдХреБрдЫ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдм рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЗрдЦ рдореМрдЬреВрдж рдереЗ, рдЬреИрд╕реЗ "PHP рдореЗрдВ Coroutines рдФрд░ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛" рдФрд░ "рдЖрдЦрд┐рд░рдХрд╛рд░ рдпрд╣ PHP 5.5 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИ"
рдпрд╣ рдЖрд▓реЗрдЦ PHP 5.5.0 рдХреА рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛ "рдкрд╛рд╕рд╡рд░реНрдб рд╣рд╛рд╢рд┐рдВрдЧ рдПрдкреАрдЖрдИред " рдмреАрдорд┐рдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдФрд░ рд╣реИрд╢ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕рд╡рд░реНрдб рдХреА рд╡реИрдзрддрд╛ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдирдП рдПрдкреАрдЖрдИ рдХрд╛ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИрд╢ рдХреА рдкреАрдврд╝реА рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдЫрд┐рдкрдХрд░ рдирдордХ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдФрд░ рд╣реИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (рдмреАрд╕реАрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╣реИрд╢ рдмрдирд╛рдирд╛ "$ рд╣реИрд╢ = рдкрд╛рд╕рд╡рд░реНрдб_рд╣рд╢ ($ рдкрд╛рд╕рд╡рд░реНрдб, PASSWORD_FAFAULT);" рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди "рдкрд╛рд╕рд╡рд░реНрдб_рд╢рдмреНрдж ($ рдкрд╛рд╕рд╡рд░реНрдб, $ рд╣реИрд╢)" рд╣реИред рдирдП рдПрдкреАрдЖрдИ рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рдХрд╛рд░рдг рд▓рд╡рдгреЛрдВ рдХреА рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рд▓рд╛рдкрд░рд╡рд╛рд╣ рд░рд╡реИрдпрд╛ рдФрд░ рд╣реИрд╢ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рд╡реНрдпрд╛рдкрдХ рдкрд╕рдВрдж рд╣реИ рдЬреЛ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрдд рдирд╣реАрдВ рд╣реИрдВред

рд▓рдЧрд╛рддрд╛рд░, рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдХреЛрдб рдЬреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ
рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣рдореЗрд╢рд╛ PHP рдХреЛрд░ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ рд╣реИрдВред

PASSWORD_BCRYPT (рдкреВрд░реНрдгрд╛рдВрдХ) = 1
PASSWORD_BCRYPT рдХрд╛ рдЙрдкрдпреЛрдЧ CRYPT_BLOWFISH рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдкрд╛рд╕рд╡рд░реНрдб рд╣реИрд╢ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

PASSWORD_DEFAULT (рдкреВрд░реНрдгрд╛рдВрдХ) = PASSWORD_BCRYPT
рдпрджрд┐ рдХреЛрдИ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ PHP рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдирдП, рдЕрдзрд┐рдХ рдХреБрд╢рд▓ (рдЬреИрд╕реЗ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рд╣реИрд╢ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкрд╛рд╕рд╡рд░реНрдб рд╣рд╛рд╢рд┐рдВрдЧ рдХрд╛рд░реНрдп




array password_get_info (string $ hash) - рдЗрд╕ рд╣реИрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИред

рддреАрди рддрддреНрд╡реЛрдВ (рдХреБрдВрдЬреА) рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╣рдпреЛрдЧреА рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ:
- рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо ( рдПрд▓реНрдЧреЛ ), рдЬреЛ рдкрд╛рд╕рд╡рд░реНрдб рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рд░рдВрддрд░ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛;
- рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо ( рдПрд▓реНрдЧреЛрдирд╛рдо ) рдХрд╛ рдирд╛рдо, рдЬрд┐рд╕рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдорд╛рдирд╡-рдкрдардиреАрдп рдирд╛рдо рд╣реИ;
- рд╡рд┐рдХрд▓реНрдк ( рд╡рд┐рдХрд▓реНрдк ) рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгреА, рдЬрд┐рд╕рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб_рд╣рд╛рд╢ () рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ ред




string password_hash (string $ password, integer $ algo [, array $ options]) - рдПрдХ рдирдпрд╛ рдкрд╛рд╕рд╡рд░реНрдб рд╣реИрд╢ рдмрдирд╛рддрд╛ рд╣реИред

рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдкрд╛рд╕рд╡рд░реНрдб рдпрд╛ FALSE рд▓реМрдЯрд╛рддрд╛ рд╣реИред




рдмреВрд▓рд┐рдпрди password_needs_rehash (string $ hash, string $ algo [, string $ options]) - рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ hash рджрд┐рдП рдЧрдП рдПрд▓реНрдЧреЛрд░рд┐рдердо рдФрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣реИрд╢ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

TRUE рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдпрджрд┐ рджрд┐рдП рдЧрдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдФрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ, рдпрд╛ рдЕрдиреНрдпрдерд╛ FALSE рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред




рдмреВрд▓рд┐рдпрди password_verify (рд╕реНрдЯреНрд░рд┐рдВрдЧ $ рдкрд╛рд╕рд╡рд░реНрдб, рд╕реНрдЯреНрд░рд┐рдВрдЧ $ рд╣реИрд╢) - рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрд╛рд╕рд╡рд░реНрдб рджрд┐рдП рдЧрдП рд╣реИрд╢ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣реИрд╢ рдкрд╛рд╕рд╡рд░реНрдб_рд╣рд╛рд╢ () рдпрд╛ рдПрдХ рдирд┐рдпрдорд┐рдд рдХреНрд░рд┐рдкреНрдЯ () рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рд╣реИрд╢ рдореИрдЪ рдпрд╛ рдЕрдиреНрдпрдерд╛ FALSE рдЕрдЧрд░ TRUE рд▓реМрдЯрд╛рддрд╛ рд╣реИред




рдХреЛрдб рдФрд░ рдЖрдЙрдЯрдкреБрдЯ

<?php $options = [ 'cost' => 7, 'salt' => 'BCryptRequires22Chrcts', ]; $hash['hash'][] = password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options); //"$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq" $hash['hash'][] = password_hash("rasmuslerdorf", PASSWORD_DEFAULT); //"$2y$10$hHi0De9WN.HL6.Fz1ElvbOMIU5NA0tetwdJzNziKJvHFXFqOxsybi" $hash['info'][] = password_get_info($hash['hash'][0]); //array("algo" => 1 , "algoName" => "bcrypt" , "options" => array("cost" => 7 )) $hash['info'][] = password_get_info($hash['hash'][1]); //array("algo" => 1 , "algoName" => "bcrypt" , "options" => array("cost" => 10 )) $hash['rehash'][] = password_needs_rehash($hash['hash'][0],PASSWORD_BCRYPT,$options); //false $hash['rehash'][] = password_needs_rehash($hash['hash'][0],PASSWORD_DEFAULT); //true $hash['rehash'][] = password_needs_rehash($hash['hash'][1],PASSWORD_DEFAULT); //false $hash['pas_verify'][] = password_verify('rasmuslerdorf', $hash['hash'][0]); //true $hash['pas_verify'][] = password_verify('rasmuslerdorf', $hash['hash'][1]); //true $hash['pas_verify'][] = password_verify('rasmuslerdorff', $hash['hash'][0]); //false $hash['pas_verify'][] = password_verify('rasmuslerdorff', $hash['hash'][1]); //false var_dump($hash); 

рдЖрдЙрдЯрдкреБрдЯ рдкрд░рд┐рдгрд╛рдо
 array(4) { ["hash"]=> array(2) { [0] => string(60) "$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq" [1] => string(60) "$2y$10$CYb5tz9f5IVAgqX7SkIv9ufbi6yYlMQgAHcV4ixXjYSHJZl9KwLrK" } ["info"]=> array(2) { [0]=> array(3) { ["algo"] => int(1) ["algoName" ]=> string(6) "bcrypt" ["options"] => array(1) { ["cost"] => int(7) } } [1]=> array(3) { ["algo"] => int(1) ["algoName"] => string(6) "bcrypt" ["options"] => array(1) { ["cost"] => int(10) } } } ["rehash"]=> array(3) { [0] => bool(false) [1] => bool(true) [2] => bool(false) } ["pas_verify"]=> array(4) { [0] => bool(true) [1] => bool(true) [2] => bool(false) [3] => bool(false) } } 


рд╕рд╛рдЗрдЯ 3v4l.org рдкрд░ рднреА рдЖрдк PHP рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ VLD opcodes рдФрд░ рддреБрд▓рдирд╛рддреНрдордХ рдкреНрд░рджрд░реНрд╢рди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдПрдХ рд▓реЗрдЦ рд╕реЗ рдХреЛрдб рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рд╕рдВрд╕реНрдХрд░рдгрд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдордпрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╕рдордпрдореИрдХреНрд╕ред рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ
5.5.0alpha10.018 рдПрд╕0.267 рдПрд╕12,152 рдорд┐.рдмреА.
5.5.0alpha20.018 рдПрд╕0.267 рдПрд╕12,148 MiB
5.5.0alpha30.015 рдПрд╕0.271 рдПрд╕12,148 MiB
5.5.0alpha40.019 рдПрд╕0.268 рдПрд╕12,164 MiB
5.5.0alpha50.014 рдПрд╕0.270 рдПрд╕12,195 MiB
5.5.0alpha60.016 рдПрд╕0,304 рдПрд╕12,219 MiB
5.5.0beta10.017 рдПрд╕0.270 рдПрд╕12,270 MiB
5.5.0beta20.027 рдПрд╕0.294 рдПрд╕12,270 MiB
5.5.0beta30.022 рдПрд╕0.265 рдПрд╕12,656 MiB
5.5.0beta40.016 рдПрд╕0.299 рдПрд╕12,656 MiB

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЕрдВрддрд┐рдо 5.5.0 рд░рд┐рд▓реАрдЬрд╝ рдЕрднреА рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рд╣реИред

рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдкрдбреЗрдЯ
рдлрд┐рд▓рд╣рд╛рд▓, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (рдЕрдм рддрдХ рдХреЗрд╡рд▓ рдПрдХ рд╕рдорд░реНрдерд┐рдд рд╣реИ) рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд┐рд░рдВрддрд░ PASSWORD_DEFAULT рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рднрд╛рд╖рд╛ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, PHP рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдкрд╛рд╕рд╡рд░реНрдб (BCrypt) рдХреА рдЧрдгрдирд╛ рдХреА рдПрд▓реНрдЧреЛрд░рд┐рдердо рд▓рд╛рдЧрдд рдХреЛ рдмрдврд╝рд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ - рдЗрд╕рд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб_рд╣рд╛рд╢ () рдлрд╝рдВрдХреНрд╢рди рддрдХрдиреАрдХреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕реБрдзрд╛рд░ рдХреЗ рд╕рд╛рде, рд╕рдордп рдХреЗ рд╕рд╛рде рдкреНрд░рднрд╛рд╡реА рд░рд╣рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рднрд╡рд┐рд╖реНрдп рдХреА рдЪрд┐рдВрддрд╛
рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЗ рд╕рд╛рде, рднрд╡рд┐рд╖реНрдп рдХреА рд╕рдВрдЧрддрддрд╛ рдЧрдВрднреАрд░ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрджрд▓рддреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред

рд╕рдВрджрд░реНрдн:
рдкрд╛рд╕рд╡рд░реНрдб рд╣рд╛рд╢рд┐рдВрдЧ рдПрдкреАрдЖрдИ рдкреНрд░рд▓реЗрдЦрди
рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз: рд╕рд░рд▓ рдкрд╛рд╕рд╡рд░реНрдб рд╣реИрд╢рд┐рдВрдЧ рдПрдкреАрдЖрдИ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝рдирд╛ - рдПрдВрдереЛрдиреА рдлреЗрд░рд╛рд░рд╛
рдирдИ PHP.net рд╕рд╛рдЗрдЯ рдХрд╛ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг

рдпреВрдЬреАрдиреЛ рджреНрд╡рд╛рд░рд╛ рдкреАрдПрд╕ :
рдЕрдм рдЖрдк рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдмрд╕ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: github.com/ircmaxell/password_compat/blob/master/lib/password.php (PHP рдЖрд╡рд╢реНрдпрдХ> = 5.3.7)
рдЬрд┐рд╕реЗ рдЙрд╕реА рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ PHP рдХреЛрдб - рдПрдВрдереЛрдиреА рдлреЗрд░рд╛рд░рд╛ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрд╛ рдерд╛

PS рд╡рд░реНрддрдиреА рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдЕрдиреБрд╡рд╛рдж рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ hp рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ

рдзрдиреНрдпрд╡рд╛рдж:
рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж
рд╕рдВрдХреЗрдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП nixmale , newdya , рдХреИрд╕реЗ ред
рдкреВрд░рдХ рдХреЗ рд▓рд┐рдП EugeneOZ ред
"рд╕рдВрднрд╡ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЕрджреНрдпрддрди" рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдорд╛рд░реНрдЧред

Source: https://habr.com/ru/post/In184220/


All Articles