рд╣реИрд╢ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдкрд╛рд╕рд╡рд░реНрдб рднрдВрдбрд╛рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛

Updред рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ BCrypt рдХреНрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдм рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк PHP 5.5+ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рдореИрдВрдиреЗ рдЕрдкрдиреА рдмрд╛рдЗрдХ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛, рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛, рд▓реЗрдХрд┐рди рджреЛ рд╣реИрдВрдбрд▓рдмрд╛рд░, рдПрдХ рд░рд┐рдпрд░ рд╕реНрдкреЗрдпрд░ рдХреЗ рд╕рд╛рдеред рд╡рд╣ рдЬрд╡рд╛рди рдерд╛, рдЧрд░реНрдо рдерд╛ред

рд╣рд╛рдп, рд╣реЗрдмреНрд░! рдЖрдЬ, рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдерд╛ - рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ? рдХрдИ рд╡рд┐рдХрд▓реНрдк рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ:



рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рддреБрд░рдВрдд рджреВрд░ рд╣реЛ рдЧрдпрд╛ред рдХреБрдЫ рд╡рд┐рдЪрд╛рд░-рд╡рд┐рдорд░реНрд╢ рдХреЗ рдмрд╛рдж рдирд┐рдпрдорд┐рдд рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рддреНрдпрд╛рдЧрдирд╛ рдкрдбрд╝рд╛ред

рд╣реИрд╢ рдлрдВрдХреНрд╢рдВрд╕

рд╣реИрд╢ рдлрдВрдХреНрд╢рди рдХреА рдЯрдХреНрдХрд░ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдкрд░ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛рдлреА рдХрдо рд╣реИ, рдФрд░ рд╣реИрд╢ рдХреА рд▓рдВрдмрд╛рдИ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдкреНрд░рдЪрд▓рд┐рдд (рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдХрднреА-рдХрднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ) рдлрд╝рдВрдХреНрд╢рди crc32 () рд╣реИрд╢ рдХреЗ рд░реВрдк рдореЗрдВ 32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рджреЗрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣реИрд╢ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрднрд╛рд╡рдирд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдкрдХреЛ 2 ^ 32 = 4,294,967,296 рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реА рдореБрдлреНрдд рд╣реЛрд╕реНрдЯрд┐рдВрдЧ crc32 рдкрд░ рднреА рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 350,000 рдмрд╛рд░ рдХреЗ рдХреНрд░рдо рдХреА рдЧрддрд┐ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдЕрдкрдиреЗ рдЖрдк рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣реИрд╢ рдХреЛ рдХреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдиреЗ рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ;)

рдмреЗрд╢рдХ, рдпрд╣ md5 () (рдПрдХ 128-рдмрд┐рдЯ рд╣реИрд╢) рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ sha1 () (рдПрдХ 160-рдмрд┐рдЯ рд╣реИрд╢) рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЙрдирдХреА рдЯрдХреНрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд▓реЗрдЦ рд╣реИ ...

рд░реЗрдирдмреЛ рдЯреЗрдмрд▓

рдЗрдВрджреНрд░рдзрдиреБрд╖ рдХреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рд╕рд╡рд░реНрдбреЛрдВ рдХреЗ рд╣реИрд╢ - рдирд╛рдо, рдЬрдиреНрдо рдХреА рддрд╛рд░реАрдЦ, рдЬрд╛рдирд╡рд░реЛрдВ рдХреЗ рдирд╛рдо, рдЖрджрд┐ рд╣реЛрддреЗ рд╣реИрдВред рдЗрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд▓рд╛рдЦреЛрдВ, рдЕрд░рдмреЛрдВ рдореВрд▓реНрдп рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЬрд▓реНрджреА рд╣реИ, рдФрд░ рдХрд┐рд╕реА рдПрдХ рдореВрд▓реНрдп рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реИрд╢ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рднрд╛рдЧ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ "рдирдордХ" рдпрд╛ md5 (sha1 (md5 ($ рдкрд╛рд╕))) рдЬреИрд╕реЗ рдирд┐рд░реНрдорд╛рдгреЛрдВ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

$password = "easypassword"; //  ,   , ,     echo sha1($password); //       sha1()  : 6c94d3b42518febd4ad747801d50a8972022f956 $salt = "f#@V)Hu^%Hgfds"; //    ,      echo sha1($salt . $password); //     ,  : cd56a16759623378628c0d9336af69b74d9d71a5 //              


рд░реЗрдирдмреЛ рдЯреЗрдмрд▓ред рднрд╛рдЧ реи

рд╕реНрдереИрддрд┐рдХ рдирдордХ рдФрд░ рдкрд╕рдВрдж рдХрд╛рдлреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реЗрд╡рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ... рдЬрдм рддрдХ рдЗрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдФрд░ рдирдордХ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЧреБрдкреНрдд рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╣рдорд▓рд╛рд╡рд░ рд╣реИрд╢ рд╕реАрдХреНрд░реЗрдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП "рдЗрдВрджреНрд░рдзрдиреБрд╖ рддрд╛рд▓рд┐рдХрд╛" рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдХрдм рд╕реЗ рд╣рдо рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╕рдорд╛рдзрд╛рди рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдирдордХ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХреБрдЫ:

 $hash = sha1($user_id . $password); 


рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирдордХ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ, рдЬреИрд╕реЗ:

 //      22  function unique_salt() { return substr(sha1(mt_rand()),0,22); } $unique_salt = unique_salt(); $hash = sha1($unique_salt . $password); //    


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

рд╣рд╢ рджрд░

рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ - рддреЗрдЬреА рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред рдЬрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рд╣реИрд╢ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЙрддрдиреА рд╣реА рддреЗрдЬреА рд╕реЗ рд╣рдорд╛рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдн рджрд░реНрдЬ рдХрд░рдиреЗ рдФрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣реИрд╢ рд░реЗрдЯ рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛, рд╣реИрдХрд░ рдЙрддрдиреА рд╣реА рддреЗрдЬреА рд╕реЗ рдЙрд╕реЗ рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИред

рд╢рдХреНрддрд┐рд╢рд╛рд▓реА GPU рдХреЗ рд╕рд╛рде рдЖрдзреБрдирд┐рдХ рдкреАрд╕реА рд▓рд╛рдЦреЛрдВ рд╣реИрд╢ рдХреА рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдпрд╛ рдЕрдзрд┐рдХ рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рд╕рд░рд▓ рдЪрдпрди рдХреЗ рд╕рд╛рде рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд╛рдирд╡рд░ рдмрд▓ рдХреЗ рд╣рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ 8 рд╡рд░реНрдг рдкрд╛рд╕рд╡рд░реНрдб рдкрд░реНрдпрд╛рдкреНрдд рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ? рдпрджрд┐ рдкрд╛рд╕рд╡рд░реНрдб рд▓реЛрдЕрд░ рдФрд░ рдЕрдкрд░ рдХреЗрд╕ рдХреИрд░реЗрдХреНрдЯрд░реНрд╕ рдФрд░ рдирдВрдмрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд░реНрдгреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ 62 (26 + 26 + 10) рд╣реИред 8 рд╡рд░реНрдгреЛрдВ рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд▓рд┐рдП, 62 ^ 8 рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрди (218 рдЯреНрд░рд┐рд▓рд┐рдпрди рдХреЗ рдХреНрд░рдо рдХреЗ) рд╣реИрдВред 1 рдмрд┐рд▓рд┐рдпрди рд╣реИрд╢ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб (рдПрдХ рдмреНрд░реВрдЯ рдмрд▓ рд╣рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЫреЛрдЯрд╛) рдХреА рдЧрддрд┐ рд╕реЗ, рдкрд╛рд╕рд╡рд░реНрдб рд▓рдЧрднрдЧ 60 рдШрдВрдЯреЛрдВ рдореЗрдВ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред рдФрд░ 6 рдЕрдХреНрд╖рд░реЛрдВ рдХреА рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рд╕рд╡рд░реНрдб рд▓рдВрдмрд╛рдИ рдХреЗ рд▓рд┐рдП, рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдЕрд╡рдзрд┐ рджреЛ рдорд┐рдирдЯ рд╕реЗ рдХрдо рд╣реЛрдЧреАред

рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЫреЛрдЯреЗ рдФрд░ рд╕рд░рд▓ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рд╕рднреА рдХреЛ 10-рд╡рд░реНрдг рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд╡реЗрдЪреНрдЫрд╛ рд╕реЗ рдФрд░ рдЬрдмрд░рди, рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди рдФрд░ рд╕реБрдореЗрд░рд┐рдпрди рдХреНрдпреВрдирд┐рдлреЙрд░реНрдо рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдзреАрдореА рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрди рдХреЛрдб рдХреЗ рд╕рд╛рде рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ 1000 рдмрд╛рд░ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдзреАрдорд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 function myhash($password, $unique_salt) { $salt = "f#@V)Hu^%Hgfds"; $hash = sha1($unique_salt . $password); //      1000 ,     1000 ,      for ($i = 0; $i < 1000; $i++) { $hash = sha1($hash); } return $hash; } 


рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, 60 рдШрдВрдЯреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣реИрдХрд░ рд▓рдЧрднрдЧ 7 рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП 8-рд╡рд░реНрдг рдХрд╛ рдкрд╛рд╕рд╡рд░реНрдб рддреЛрдбрд╝ рджреЗрдЧрд╛ред рдзреАрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдХреНрд░рд┐рдкреНрдЯ () рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ PHP рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдмреНрд▓реЛрдлрд╝рд┐рд╢ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ ред рдЖрдк рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ (CRYPT_BLOWFISH == 1) рдЧреВрдВрдЬ 'рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!' PHP 5.3 рдореЗрдВ, рдмреНрд▓реЛрдлрд╝рд┐рд╢ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢рд╛рдорд┐рд▓ рд╣реИред

 function myhash($password, $unique_salt) { //   blowfish     22  return crypt($password, '$2a$10$'.$unique_salt); } 


$ 2 рдП рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рдмреНрд▓реЛрдлрд┐рд╢ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
$ 10 рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдзреАрдорд╛ рдХрд░рдиреЗ рдХреА рд╢рдХреНрддрд┐ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ 2 ^ 10 рд╣реИред рдпрд╣ 04 рд╕реЗ 31 рддрдХ рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИ

рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХрд░рддреЗ рд╣реИрдВ:

 $hash = '$2a$10$dfda807d832b094184faeu1elwhtR2Xhtuvs3R9J1nfRGBCudCCzC'; $password = "verysecret"; if (check_password($hash, $password)) { echo " !"; } else { echo " !"; } function check_password($hash, $password) { //  29  ,  , ┬л ┬╗   ┬л┬╗    $full_salt $full_salt = substr($hash, 0, 29); //  -   $password $new_hash = crypt($password, $full_salt); //   (┬л┬╗  ┬л┬╗) return ($hash == $new_hash); 


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

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


All Articles