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

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

рдЫрд╡рд┐

рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рддреЗрдВ рд╕реАрдЦреЗрдВрдЧреЗ:

  1. рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреНрдпрд╛ рд╣реИ;
  2. рд╕рдордорд┐рдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдЕрд╕рдордорд┐рддрддрд╛ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИ;
  3. рдХрд┐рд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдордорд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ, рдФрд░ рдЬрд┐рд╕рдореЗрдВ рдЕрд╕рдордорд┐рдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╣реИ;
  4. рдбреЗрдЯрд╛ рд╣реИрд╢ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдореЗрдВ рдХреНрдпреЛрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;

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

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

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

рдХрд╣рд╛рдиреА


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

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

рдореБрдЦреНрдпрд╛рд▓рдп рдиреЗ рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдордВрдЬреВрд░реА рджреА:

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

рдпреЛрдЬрдирд╛
рдЫрд╡рд┐

рдЖрдк рдПрдХ рдЯреАрдо рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВ рдЬреЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

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

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

рдЗрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рд╕реЗ рдХрд╛рд░реНрдп рддреИрдпрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ:

  1. рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП;
  2. рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рдпрд╛ рдЙрдирдХреЗ рд╕рдордЭреМрддреЗ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдирдИ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ рдкреНрд░рддрд┐рдХреВрд▓ рджреНрд╡рд╛рд░рд╛ рдЯреИрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реВрдЪрдирд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди


рдЖрдЗрдП рд╕реВрдЪрдирд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдВ:

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

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

рдЫрд╡рд┐

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

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

рдЫрд╡рд┐

рдХреНрд░рд┐рдпрд╛ рдХрд╛ рддрдВрддреНрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

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


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

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

from Crypto.Cipher import AES #   from Crypto.Hash import SHA256 #        SHA. from Crypto.Hash import MD5 #            32  from Crypto import Random def transform_password(password_str): """Transform the password string into 32 bit MD5 hash :param password_str: <str> password in plain text; :return: <str> Transformed password fixed length """ h = MD5.new() h.update(key.encode()) return h.hexdigest() def symmetric_encrypt(message, key, verbose = True): """Encripts the message using symmetric AES algorythm. :param message: <str> Message for encryption; :param key: <object> symmetric key; :return: <object> Message encrypted with key """ key_MD5 = transform_password(key) #      32  message_hash = SHA256.new(message.encode()) message_with_hash = message.encode() + message_hash.hexdigest().encode() #     .      iv = Random.new().read(AES.block_size) cipher = AES.new(key_MD5, AES.MODE_CFB, iv) #     . AES.MODE_CFB -   ,      iv. https://www.dlitz.net/software/pycrypto/api/current/Crypto.Cipher.blockalgo-module.html#MODE_CFB encrypted_message = iv + cipher.encrypt(message_with_hash) #       .  ,       ,       . if verbose: print(f'Message was encrypted into: {encrypted_message.hex()}') return encrypted_message def symmetric_decrypt(encr_message, key): """Decripts the message using private_key and check it's hash :param encrypted_message: <object> Encrypted message :param key: <object> symmetric key; :return: <object> Message decripted with key """ key_MD5 = transform_password(key) #   ,      bsize = AES.block_size dsize = SHA256.digest_size*2 iv = Random.new().read(bsize) cipher = AES.new(key_MD5, AES.MODE_CFB, iv) decrypted_message_with_hesh = cipher.decrypt(encr_message)[bsize:] #     ,      decrypted_message = decrypted_message_with_hesh[:-dsize] #   ,      digest = SHA256.new(decrypted_message).hexdigest() #    .     ,     . if digest==decrypted_message_with_hesh[-dsize:].decode(): #      ,      ,   print(f"Success!\nEncrypted hash is {decrypted_message_with_hesh[-dsize:].decode()}\nDecrypted hash is {digest}") return decrypted_message.decode() else: print(f"Encryption was not correct: the hash of decripted message doesn't match with encrypted hash\nEncrypted hash is {decrypted_message_with_hesh[-dsize:]}\nDecrypted hash is {digest}") 

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ
 message = """  120   120  / 120   10     30-5 (2)    4.0 """ key = 'Traveling through hyperspace ain't like dusting crops, farm boy.' encr_message = symmetric_encrypt(message, key, verbose = True) print('\n') print('DECRIPTION') decr_message = symmetric_decrypt(encr_message, key) print(decr_message) 

 Message was encrypted into: ed10e4c65358bb9e351c801c3b3200b21fa86a24021c317bb5c9d8b3f76bdf9f3a7d26781a22402f0e4f41ca831b6d2da9e1e6878c34c79ddc7959af3ae9fc2ba0cfff1c0180a7e0f637f1aa5b24507d552d5dfe7625e7b81d817b5882b2b19bb95f3988a03c78f850098dfc8e6089863deaa39b887eaea4c1d4ba006edaec90205d54b27ed4ac70ed75cdd01732e1176bf04218beb8ae742ff708a201a9d1cb57dd5f2e70dc3239208d23705f7a3aae3e315c4df6d73c871b66c4995cce5f19738f731cd58755d21ed92612c44197f875cddf3f7aa1d60e435ce1492679b9d60c4b8538f52408f321711ac1d2daa6dbbc33dc655abca10e2f5fd3ff27823995b9dcdb62c0bafc1963ab539ccb466f1c140479df34b0005f578f72fcdd76b17391332037b801f74f733a08 DECRIPTION Success! Encrypted hash is b0dbb35b28fbff258350a50c39282b73e31f408c9da937c81d8d48115b491026 Decrypted hash is b0dbb35b28fbff258350a50c39282b73e31f408c9da937c81d8d48115b491026  120   120  / 120   10     30-5 (2)    4.0 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдордиреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рд╣реИред
рдХреЛрдб рдХреЛ рдХрдИ рдмрд╛рд░ рдЪрд▓рд╛рдПрдВред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╣рд┐рд╕реНрд╕рд╛ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддреЗ рд╕рдордп, рд╣рдордиреЗ рд╕рд┐рдлрд░ рдлреАрдбрдмреИрдХ рдореЛрдб (AES.MODECFB) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдкреНрд▓реЗрдирдЯреЗрдХреНрд╕реНрдЯ рдмреНрд▓реЙрдХ рдХреЛ рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред iv - рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╡реЗрдХреНрдЯрд░ ( рдпрд╣рд╛рдБ рдореЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ)ред рд╕рдВрджреЗрд╢ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдбрд┐рдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕рдВрджреЗрд╢ рдХрд╛ рд╣реИрд╢ рдЙрд╕ рд╣реИрд╢ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рджреМрд░рд╛рди рдЬреЛрдбрд╝рд╛ рдерд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рд╕рд╣реА рдерд╛ред

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



рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдП? рдлрд┐рд░ рдХреЛрдИ рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

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

рдирд┐рд░реНрдгрдп

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ Akela_wolf рдиреЗ рд╕рд╣реА рдЯрд┐рдкреНрдкрдгреА рдХреА рдХрд┐ рдХреЛрдИ рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рднреЗрдЬ рдФрд░ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреБрдЫ рд╕рдорд╛рдпреЛрдЬрди рдХрд┐рдпрд╛ред

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






рдкреБрд░рд╛рдирд╛ рдлреИрд╕рд▓рд╛
  1. рдПрдЬреЗрдВрдЯ рдЬрдЧрд╣ рдореЗрдВ рдПрдХ рдкреНрд░рдореБрдЦ рдЬреЛрдбрд╝реА (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА) рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛, рдлрд┐рд░ рд╡рд┐рджреНрд░реЛрд╣реА рдмрд▓реЛрдВ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рднреЗрдЬреЗрдЧрд╛;
  2. рдкреНрд░рддрд┐рд░реЛрдз рдХреЗ рдореБрдЦреНрдпрд╛рд▓рдп рдореЗрдВ рд╡реЗ SYMMETRIC рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдХреБрдВрдЬреА рдмрдирд╛рдПрдВрдЧреЗ;
  3. рдПрдЬреЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗ рдЧрдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдордорд┐рдд рдХреБрдВрдЬреА рдХреЛ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
  4. рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕рдордорд┐рдд рдХреБрдВрдЬреА рдПрдЬреЗрдВрдЯ рдХреЛ рднреЗрдЬреА рдЬрд╛рдПрдЧреА, рдЬреЛ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдбрд┐рдХреЛрдб рдХрд░реЗрдЧрд╛ред

рдЦреБрд▓реЗ рдЪреИрдирд▓ рдкрд░ рд╣рдорд╛рд░реЗ рд╢реЛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:

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


рдЕрдВрддрд░рд╡рд┐рд░реЛрдз рдореЗрдВ рди рддреЛ рдкрд╣рд▓рд╛ рдФрд░ рди рд╣реА рджреВрд╕рд░рд╛ рд╕рдВрджреЗрд╢ рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХрд╛ рд╣реИред


рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 #          RSA. #        SHA256 from Crypto.PublicKey import RSA #      def generate_keys(bits = 2048): """Generates the pair of private and public keys. :param bits: <int> Key length, or size (in bits) of the RSA modulus (default 2048) :return: <object> private_key, <object> public_key """ private_key = RSA.generate(bits) public_key = private_key.publickey() return private_key, public_key private_key, public_key = generate_keys(bits = 2048) 

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЪрд╛рдмрд┐рдпрд╛рдБ рдХреНрдпрд╛ рджрд┐рдЦрддреА рд╣реИрдВред
 print(private_key.exportKey(format='PEM').decode()) print('\n') print('#'*65) print('\n') print(public_key.exportKey(format='PEM').decode()) 

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA4JDLu7Vtvg2yqbH6Y0eJPfoEsOlKzgmOodqhA1CqkEG4OpKi
sGW7ciGP4v37GE6edHBCEy4UNkVQtnpPBjzTHvKd1pO70B84vD5OSrS7uNw2EYkj
d/ZwhrJMrcQKRwPkkM4OiewaaAaK0vPWJIKwlW61DY9X7LfNz7aOKMTbKnm1vdR0
919AV98FUmNoQBgka6nXFGmNbi7D43MtLwxBZIXfFupEiANSvOs+57hgaCho7OWM
GUOjLkG6HBscPhJ2W1H5DU9GjwL24ynTvKifgo1/2ue61MV1Pzh5CVaicJKNaRtg
Pd99gFhBGINsXV2X6Jh/W5nNsCddU4EI0AlO8wIDAQABAoIBAARM4YnjrIlSK9Sy
EtBp40frjMFyhjsx1ahlzmWI2utORt/gRPtJx3AlEmNPZ8qMXt5t8+X4IOz1INmN
uAuviH90N++O/q66mlSIgOlPUrT0ipiFXseCUZ9StMMzGNtJSMw5FfAwNEU/stLd
VoF2ezkxWIg88XsX/fn3Tfub4XKLvu4raJGcJ+Fo2GI9hYEGKnHhSuHvDHekTLlQ
z46O+cIwtehbFGcKesyK3zDD1uP5YLPIWpiqt1TgKjJzRF0l4ZJLk+RT7kU2pGIQ
mosOnr+06WyMIg724yQyAIwtS9X0czKBGUESrtTTb1HCXLeTwnncOTxh6q2z42LF
tn34+DECgYEA6EEp4oTvjfTQfUQPMByuAjF1hpdFHQqRymygiFgoF+Mg3QmL0w8j
/84H/q7s8FSx+3th8MK87bFq4lrry+h/mYwmvF5zZbhxcnl2uaX+KUPgpT6TgvAo
WOv2wc4BSaoo9DrxrZId86vpO2qbopw6gkBsvw47HSoQ+FSqXtZ0p8kCgYEA94Zj
b1ulctUjybiszO93TAjkzx3lU3yL+B1eZiQXtJa3mgG+ka1R/uMfr0NlT+Jzo0My
wHV30YRJDxziCrDol9OgSSU0sXwEcUxUIBLBwXLCp1EmMsYG9PB/x4OTWve35a8F
O+rMxuvWaZeIOfVCfL8UEcWweYaVdWIonJN+ltsCgYEAjeSZ2UlMLZce9RjqioNL
EA31dlfeoqJ9dYUuAn6RaB6cSk51vWlnnfXazo9CNIYaAsFbkcL3t+QHn+jaXEZc
BowocjbmG4Q20zBAB6XRBJbynSIA7yMYE1N9+uOHx+CMisGkO12krOUfZex4zzzR
RhhkF8ly9htoKL9ZIv20YXkCgYBzH3UF6PkVZJ5lhtgP5Nx2Z7iLwBrV7ppnBrnO
BcFkw6iXH3KT7KmzQ82LxWvMcMVZzLpBGyFkOAOG3OchE9DKNKpa+sv8NHMYguip
li+5mneAPFTozoOTznuPvtl9OLO2RuXHTVh6uFub9tdsJW8L+A8MiQagLwE6fDHp
SQxaewKBgQDIyzL1THpW3+AMNrOZuI/d3Em5wpGJiZbDSBRosvsfGm/sHaz4Ik5E
nWnftgktmsAD60eORTTh9/ww/nm7f3q9kzT8Sv1MmqeRXq9VFIOeP/+8SSE/7LzD
izlb5xEtVD8LuY54jHyiOxiZC++TQswMnOKKi0Gx26MDoO7Tx9akVw==
-----END RSA PRIVATE KEY-----

#################################################################

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4JDLu7Vtvg2yqbH6Y0eJ
PfoEsOlKzgmOodqhA1CqkEG4OpKisGW7ciGP4v37GE6edHBCEy4UNkVQtnpPBjzT
HvKd1pO70B84vD5OSrS7uNw2EYkjd/ZwhrJMrcQKRwPkkM4OiewaaAaK0vPWJIKw
lW61DY9X7LfNz7aOKMTbKnm1vdR0919AV98FUmNoQBgka6nXFGmNbi7D43MtLwxB
ZIXfFupEiANSvOs+57hgaCho7OWMGUOjLkG6HBscPhJ2W1H5DU9GjwL24ynTvKif
go1/2ue61MV1Pzh5CVaicJKNaRtgPd99gFhBGINsXV2X6Jh/W5nNsCddU4EI0AlO
8wIDAQAB
-----END PUBLIC KEY-----

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд╕рдордорд┐рдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рд╡рд░реНрдгреЛрдВ рдХреЗ рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдЕрдиреБрдХреНрд░рдо рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЪрд╛рдмрд┐рдпрд╛рдВ рддреИрдпрд╛рд░ рдХреАрдВред рдЕрдм рдбреЗрдЯрд╛ рдХреЛ рдПрдирдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 from Crypto.PublicKey import RSA #        RSA. from Crypto.Hash import SHA256 #        SHA256.    #       from Crypto.Cipher import PKCS1_OAEP #   def encrypt_message(message, public_key, verbose = True): """Encripts the message using public_key. :param message: <str> Message for encryption :param public_key: <object> public_key :param verbose: <bool> Print description; :return: <object> Message encrypted with public_key """ message_hash = SHA256.new(message.encode()) #   . cipher = PKCS1_OAEP.new(public_key) message_with_hash = message.encode() + message_hash.hexdigest().encode() #      ,          encrypted_message = cipher.encrypt(message_with_hash) if verbose: print(f'Message: {message} was encrypted to\n{encrypted_message.hex()}') return encrypted_message def decrypt_message(encrypted_message, private_key): """Decripts the message using private_key and check it's hash :param encrypted_message: <object> Encrypted message :param private_key: <object> private_key :return: <object> Message decripted with private_key """ dsize = SHA256.digest_size*2 cipher = PKCS1_OAEP.new(private_key) decrypted_message_with_hesh = cipher.decrypt(encrypted_message) #   (  ) decrypted_message = decrypted_message_with_hesh[:-dsize] #      digest = SHA256.new(decrypted_message).hexdigest() #     if digest==decrypted_message_with_hesh[-dsize:].decode(): #      ,      ,   print(f"Success!\nEncrypted hash is {decrypted_message_with_hesh[-dsize:].decode()}\nDecrypted hash is {digest}") return decrypted_message.decode() else: print(f"Encryption was not correct: the hash of decripted message doesn't match with encrypted hash\nEncrypted hash is {decrypted_message_with_hesh[-dsize:]}\nDecrypted hash is {digest}") 

рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдЪрд░рдг
  1. рдПрдЬреЗрдВрдЯ рдПрдХ рдкреНрд░рдореБрдЦ рдЬреЛрдбрд╝реА рдмрдирд╛рддрд╛ рд╣реИ:
     private_key, public_key = generate_keys() 

  2. рдореБрдЦреНрдпрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдУрдкреЗрди рдХреБрдВрдЬреА рднреЗрдЬрддрд╛ рд╣реИ;
  3. рдореБрдЦреНрдпрд╛рд▓рдп рдореЗрдВ, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╕рдордорд┐рдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдХреЛ рдПрдирдХреЛрдб рдХрд░реЗрдВ:
     new_symmetric_key = 'SOME_KEY_asdfasdfasdfasdfsdfgrtwhetynt' encr_msg = encrypt_message(new_symmetric_key, public_key) 

    рдирд┐рд╖реНрдХрд░реНрд╖
    Message: SOME_KEY_asdfasdfasdfasdfsdfgrtwhetynt was encrypted to
    41e940507c96397e3feb4a53390c982633bb1775a52957996a8069bd22063086a0e831bf775a17909276aba0d0478ee6c953837c8ea5d20d40e1c8eb463aaa1bc5c93c71677b1a85e90439c9dbda8a98ce168acb38368155437c66815b84aa2fbdda0eb909e4e6079b4410c720eddd955ed048193bf87f8f9976a17ee32a58a71dfddf3db116343d949d29c25f72c511a440a50a5d4f1e01c37b24a1cb4127e191d3231328b2f120c7dbd0cb5bf19823f0978b8ed17d25952de4b146ef9724fff359eb2af503fdfd72b91525a5503b076ba9aaaeac55af3f8d210c12d579d45dd70362123c0b4b36ef9c2f7705e6f884a25553eb0e11e5077f11fa986d0ff280


  4. рдпрд╣ рд▓рдВрдмрд╛ рдЕрдиреБрдХреНрд░рдо рдПрдЬреЗрдВрдЯ рдХреЛ рд╡рд╛рдкрд╕ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ;
  5. рдПрдЬреЗрдВрдЯ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИ:
     recieved_symmetric_key = decrypt_message(encr_msg, private_key) print('\n') print(f"New symmetric key is: {recieved_symmetric_key}") 

    рдирд┐рд╖реНрдХрд░реНрд╖
     Success! Encrypted hash is 42ad66445a05ac09e684bb21f9b487d95b9cfa11d02e0b459931321ee02f7c1c Decrypted hash is 42ad66445a05ac09e684bb21f9b487d95b9cfa11d02e0b459931321ee02f7c1c New symmetric key is: SOME_KEY_asdfasdfasdfasdfsdfgrtwhetynt 


  6. рдлрд┐рд░, рдПрдХ рдирдИ рд╕рдордорд┐рдд рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдЬреЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИ:

     message = """  120   120  / 120   10     30-5 (2)    4.0 """ encr_message = symmetric_encrypt(message, recieved_symmetric_key, verbose = True) 

    рдирд┐рд╖реНрдХрд░реНрд╖
     Message was encrypted into: 


  7. рдореБрдЦреНрдпрд╛рд▓рдп рдХрд╛ рдкреНрд░рдпрд╛рд╕:
     print('DECRIPTION') decr_message = symmetric_decrypt(encr_message, new_symmetric_key) print(decr_message) 

    рдирд┐рд╖реНрдХрд░реНрд╖
     DECRIPTION Success! Encrypted hash is b0dbb35b28fbff258350a50c39282b73e31f408c9da937c81d8d48115b491026 Decrypted hash is b0dbb35b28fbff258350a50c39282b73e31f408c9da937c81d8d48115b491026  120   120  / 120   10     30-5 (2)    4.0 




рджреЗрдЦрд╛!

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

рдЕрдВрддрднрд╛рд╖рдг


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

рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛;)

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


All Articles