рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдореЗрдВ рд╣рдардзрд░реНрдорд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдХрд▓ рдореИрдВрдиреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рд▓реИрдорд░ рдиреНрдпреВрдЬ рдХрд╛ рдкрд╣рд▓рд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛, рдпрд╣ рд╣реИрдХрд░реНрд╕ рдиреНрдпреВрдЬ рдХреЗ рд╕рдорд╛рди рд╕рд╛рдЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдбрд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджреБрдирд┐рдпрд╛ рд╕реЗ рд╕рдорд╛рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╕рд╛рдЗрдЯ рдХрд╛ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИред

рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдПрдЪрдПрди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рд╣рд╛ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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

# Turn the password into an hashed one, using # SHA1(salt|password). def hash_password(password) Digest::SHA1.hexdigest(PasswordSalt+password) end 


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

рдЖрдЗрдП, рдЕрднреА рдХреЗ рд▓рд┐рдП рдПрдХ рдХрджрдо рд╡рд╛рдкрд╕ рд▓реЗрдВ рдФрд░ рдЗрд╕ рд╕рдм рдХреЗ рд╕рд╛рде рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЗрдЦреЗрдВ, рдФрд░ рдпрд╣ рдХреЛрдб рдХрд┐рддрдирд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред

рд╕рдорд╕реНрдпрд╛


рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рдКрдВрдЧрд╛ред рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╕реНрдкрд╖реНрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рд╣реИрд╢реЗрдб рд╣реЛрддреЗ рд╣реИрдВред

 HP = HASH (password) # HP тАУ hashed password,   


рдЬрдм рд╕рд░реНрд╡рд░ рднрд╛рдЧ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╣реИрд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдпрджрд┐ рдпрд╣ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдлрд▓ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдЧрд░ рдХреЛрдИ рд╣рдорд▓рд╛рд╡рд░ (рдЙрд╕реЗ рдИрд╡ рдХрд╣рддрд╛ рд╣реИ) рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдбрдВрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдИрд╡рд╛ рдореЗрдВ рд╣реИрд╢реЗрдб рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрдЧрд╛, рдЪрд▓реЛ рдЙрдиреНрд╣реЗрдВ рдПрдЪрдкреА 1, рдПрдЪрдкреА 2, рдПрдЪрдкреА 3 рдХрд╣рддреЗ рд╣реИрдВ, ... рдЙрд╕рдХрд╛ рд▓рдХреНрд╖реНрдп рдРрд╕реЗ рд╣рдорд▓реЗ рдХреЛ рдЦреЛрдЬрдирд╛ рд╣реИ рдЬреЛ рдПрдЪрдкреА рдХреЛ рд╡рд╛рдкрд╕ рдкреА рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ред

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

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

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

рдпрджрд┐ рд╣рдорд╛рд░рд╛ рд╣рдорд▓рд╛рд╡рд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдПрдХ рдЕрд░рдм рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЖрдзреБрдирд┐рдХ рдЬреАрдкреАрдпреВ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЯреВрдЯрдирд╛ рдирд╣реАрдВ рд╣реИ), рддреЛ рдЗрд╕ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╣реИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

 281474976710656 / 1000000000 = 281474  


рдпрд╣ рдХреЗрд╡рд▓ рддреАрди рджрд┐рди рд╣реИ, рдпрд╛, рдФрд╕рддрди, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдзрд╛ рднреАред рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ! рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдорд╛рди рд╕рдВрднрд╛рд╡рдирд╛ рд╡рд╛рд▓реЗ рд╕рднреА 256 рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдпрд╣ рд▓реЛрдЕрд░рдХреЗрд╕ рдореЗрдВ рдХреЗрд╡рд▓ 26 рдЕрдХреНрд╖рд░ рд╣реИрдВ, рдХреЛрдИ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЕрдиреНрдп рд╡рд░реНрдг рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕ рдмрд╛рд░ 8 рдЕрдХреНрд╖рд░реЛрдВ рдХрд╛ рдкрд╛рд╕рд╡рд░реНрдб рд▓реЗрдВред

26 ^ 8 рд╕рдВрднрд╛рд╡рд┐рдд рдкрд╛рд╕рд╡рд░реНрдб рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН 208 827 064 576ред рдЗрд╕ рд╕рдордп, рд╣рдорд╛рд░реЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ 208 рд╕реЗрдХрдВрдб (рдпрд╛ рдФрд╕рдд рдкрд░ рдЗрд╕ рдмрд╛рд░ рдЖрдзрд╛) рдореЗрдВ рдлрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд▓рд┐рдП рджреБрд░реНрдЧрдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдЕрд▓реНрдлрд╝рд╛рдмреЗрдЯрд┐рдХ рдкрд╛рд╕рд╡рд░реНрдб рдХрдм рддрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдПрдХ рдЕрд░рдм рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

14 рдкрд╛рддреНрд░реЛрдВ рдХрд╛ рдЪрдпрди рдФрд╕рддрди 1024 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред 16 рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдорд▓рд╛рд╡рд░ рдХреЛ 1382824 рд╕рд╛рд▓ рдмрд┐рддрд╛рдиреЗ рд╣реЛрдВрдЧреЗред 12 рд╡рд░реНрдг рдПрдХ рд╡рд░реНрд╖ рдФрд░ рдПрдХ рдЖрдзреЗ (рдлрд┐рд░ рд╕реЗ, рдФрд╕рддрди) рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд░реЛрдз рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред

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

рд▓реЗрдХрд┐рди рдпрд╣ рдФрд░ рднреА рдмреБрд░рд╛ рд╣реИ


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдмрджрддрд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╣рдорд╛рд░реЗ 12 рдкрд╛рддреНрд░реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣рдорд▓реЛрдВ рдХреЛ рддреБрд░рдВрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЖрдк рд▓рдЧрднрдЧ рддреАрди рд╕рд╛рд▓ рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд░рд╛рдЦ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлреЙрд░реНрдо рдкреА -> рдПрдЪрдкреА рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЧрд╣ рд╣реЛрддреА рд╣реИ (86,792 рдЯреЗрд░рд╛рдмрд╛рдЗрдЯреНрд╕, рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП), рдФрд░ рдпрд╣ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рдЗрддрдиреА рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдкреА, рдПрдЪрдкреА (рдПрдХ рдЕрдкреНрд░рд╛рдкреНрдп рд▓рдХреНрд╖реНрдп) рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рдЗрдЯ рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЦрддрд░рд╛ рд╣реИ рдЬрдм рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЖрдХрд╛рд░ рдЙрдЪрд┐рдд рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рд╣реИред

рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рдЕрдХреНрд╕рд░ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЗ рд╣рдорд▓реЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдХреЗ рдмрдЬрд╛рдп, рдЕрдзрд┐рдХ рд╕реНрдерд╛рди рдХреА рдХреАрдордд рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

 HP = HASH ("foolame") 


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдЯреЗрдмрд▓ рд╣рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдИрд╡ рдХреЛ рдПрдХ рд╣реА рдирдордХ рдХреЗ рд╕рд╛рде рд╕рднреА рдкрд╛рд╕рд╡рд░реНрдб рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдРрд╕реА рддрд╛рд▓рд┐рдХрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд╛рдЗрдЯ рдкрд░ рд╣рдорд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрдХрд╛рд░ рд╣реЛрдЧреА рдЬреЛ рдПрдХ рдЕрд▓рдЧ рдирдордХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред

рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд▓рд╡рдг


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

рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдзреАрдорд╛ рдХрд░реЗрдВ


рд╣рд╛рд▓рд╛рдВрдХрд┐, рднрд▓реЗ рд╣реА рд╣рдо рд╕рднреА рдЯреЗрдмрд▓-рдЖрдзрд╛рд░рд┐рдд рд╣рдорд▓реЛрдВ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рднреА рдПрдХ рдореВрд▓рднреВрдд рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдпрджрд┐ рдкрд╛рд╕рд╡рд░реНрдб рдХрдо рд╣реИ рдФрд░ рдИрд╡рд╛ 1 рдмрд┐рд▓рд┐рдпрди рдмрд╛рд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдПрдЪрдПрдПрдЪ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рд╣рдо рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдзреАрдорд╛ рд╣реИред

рдРрд╕реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИрдВ рдЬреЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рджреЛрдиреЛрдВ рдХреА рдЧрдгрдирд╛ рдореЗрдВ рдмрд╣реБрдд рдзреАрдореА рд╣реИрдВред рдпрд╛ рд╣рдо рдПрдХ рдореМрдЬреВрджрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмрд╣реБрдд рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдмреНрд▓реЛрдлрд┐рд╢ рдореЗрдВ рдзреАрдореА рдХреБрдВрдЬреА-рд╕рд╛рдЭрд╛рдХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ, рдпрд╣ рдПрдЪрдПрдПрд╕рдПрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдореНрдореАрджрд╡рд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдиреАрд▓реНрд╕ рдкреНрд░реЛрд╡реЛрд╕ рдФрд░ рдбреЗрд╡рд┐рдб рдорд╛рдЬрд╝рд┐рдПрд░реЗрд╕ рдиреЗ Bcrypt рдирд╛рдордХ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИрд╢ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо 1999 рдореЗрдВ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдмреНрд▓реЛрдлрд┐рд╢ рд╕реЗ рдХреБрдВрдЬреА рдЬреБрджрд╛рдИ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмреНрд▓реЛрдлрд┐рд╢ рд╡рд┐рд╢реНрд▓реЗрд╖рдг Bcrypt рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдЦреБрдж Bcrypt рдХрд╛ рдХрд┐рддрдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдкреНрд░реЛрд╡реЛрд╕ рдФрд░ рдорд╛рдЬрд╝рд┐рдПрд░реЗрд╕ рджреЛ рдкреНрд░рд╕рд┐рджреНрдз рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рд╕рдВрднрд╡рддрдГ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИрдВред

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

 26 ^ 8 / 1000 / 3600 / 24 / 365 = 6,6218627782 


8 рд╡рд░реНрдгреЛрдВ рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдХреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 3.3 рд╡рд░реНрд╖ (рдФрд╕рдд)ред рд╢рд╛рдпрдж рдЕрднреА рднреА рдкрд░реНрдпрд╛рдкреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рд╕реЗрдХрдВрдб рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдЕрднреА рднреА рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╣рдорд▓реЛрдВ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИрдВ ред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрдж рдЪреБрдирд╛ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИред 30k рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдЕрднреА рднреА рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рд╣рдардзрд░реНрдорд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдордиреЗ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕реА рдХреЛрдИ рд╣реИрд╢ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЦрд░рд╛рдм рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗ рдмрдЪрд╛рддреА рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдЕрдХреНрд╖рд░реЛрдВ рдФрд░ / рдпрд╛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдФрд░ рдЕрдиреНрдп рд╡рд░реНрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ (рдпрджрд┐ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ)ред

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

 SHA1 (SHA1 (SHA1 (...( SHA1 (password | salt)))) 


рдХреНрдпрд╛ рдПрдХ рд╡рд┐рдзрд░реНрдо! рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд░реНрдЦ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЪреЗрди рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдереЛрдбрд╝рд╛ рд╕реЛрдЪреЗрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

SHA1 рдПрдХ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдЗрд╕рдореЗрдВ рд░рд╛рдЙрдВрдбреНрд╕ рдирд╛рдордХ рдЫреЛрдЯреЗ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдмрд╛рд░-рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдИ рдХреБрдВрдЬреА рдкреГрдердХреНрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдмреНрд▓реЙрдХ рд╕рд┐рдлрд░ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдмрд╕ рдЗрдирдкреБрдЯ рдмрд┐рдЯрд╕реНрдЯреНрд░реАрдо рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореВрд▓реНрдп рдореЗрдВ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рддрд╛ рд╣реИред

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

рддреЛ рдХреНрдпреЛрдВ рди рдХреЗрд╡рд▓ рдмрд╣реБрдд рд╕рд╛рд░реЗ рджреМрд░ рдЬреЛрдбрд╝ рджрд┐рдП рдЬрд╛рдПрдВ? рдпрд╣ рдзреАрдорд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╢реМрдХрд┐рдпрд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд░ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдзреАрдорд╛ рд╣реИред рдПрдХ рдЕрдЪреНрдЫрд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд░ рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдЧрддрд┐ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдордЭреМрддрд╛ рдкрд╛ рд╕рдХрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди ... рдЪреВрдВрдХрд┐ рдЕрдм рд╣рдо рд░рд╛рдЙрдВрдб рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ SHA1 рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкреГрдердХреНрдХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд╣реАрдВ рд╣реИ, рдХрд┐ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рди рдХреЗрд╡рд▓ рдЙрд╕рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐ SHA1 рдХреЛ рдкрд▓рдЯрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рд╣реИрд╢ рджреНрд╡рд╛рд░рд╛ рдореВрд▓ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛)ред

рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИ рдХрд┐ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд SHA1 рдпреЛрдЬрдирд╛ (SHA1 (SHA1 (..))) рд╡рд╣реА рдХрд░реЗрдЧреА, рдЬреЛ SHA1 рдореЗрдВ рд░рд╛рдЙрдВрдб рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИред рдпрд╣ SHA1 рдХреЗ рдореВрд▓рднреВрдд рдЧреБрдгреЛрдВ рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ рдХрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди SHA1000 рд▓рд┐рдЦрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдЬреЛ SHA1 рдХреЗ рд▓рд┐рдП рдПрдХ рд╣рдЬрд╛рд░ рдЧреБрдирд╛ рдиреЗрд╕реНрдЯреЗрдб рдХреЙрд▓ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЧрдгрдирд╛ рдпреЛрдЧреНрдп рд╣реЛрдЧрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ SHA1 (SHA1 (..) рдХрд╛ рдкрд░рд┐рдгрд╛рдо SHA1 рдХреЗ рдЕрдВрджрд░ рдЕрдзрд┐рдХ рд░рд╛рдЙрдВрдб рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдкреНрд░реА- рдФрд░ рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рднреА рд╣реИред

рдФрд░ рдЖрдкрдХреЛ рдкрддрд╛ рд╣реИ рдХреНрдпрд╛? рдЖрдЬ рд╕реБрдмрд╣ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ RFC2898 рдореЗрдВ рд╡рд░реНрдгрд┐рдд PBKDF1 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд╕реБрдЭрд╛рдпрд╛ рдерд╛ред

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

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

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рд╢рд╛рдВрдд рд╣реВрдВ рдЬрдм рд▓реЛрдЧ рдореБрдЭрд╕реЗ рд░реВрдЦреЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдЙрд╕реА рд╕рдордп рд╡реЗ рд╕рд╣реА рд╣реЛрддреЗ рд╣реИрдВред рдорди рд╕реЗ рдЪрд▓рд╛ рдЬрд╛рдП рддреЛ рдЕрд╣рдВрдХрд╛рд░ рдмрд╣реБрдд рдмрдбрд╝реА рдореБрд╕реАрдмрдд рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрд╣рдВрдХрд╛рд░ рдЕрдЬреНрдЮрд╛рдирддрд╛ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рджреБрдЦрдж рдХрд╣рд╛рдиреА рд╣реИред

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


All Articles