рдЧреНрд░рд╛рд╕рд╣реЙрдкрд░ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо: рдмрд╕ рдЬрдЯрд┐рд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдпрд╣ рдЖрд▓реЗрдЦ GOST R 34.12-2015 рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдмреНрд▓реЙрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЧреНрд░рд╛рд╕рд╣реЙрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рджреЗрдЧрд╛ред рдпрд╣ рдХрд┐рд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдмреНрд▓реЙрдХ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЧрдгрд┐рдд рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреМрди, рдХреИрд╕реЗ, рдХрдм рдФрд░ рдХреНрдпреЛрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖ рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд░рд╣реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдмрд╣реБрдд рдХрдо рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ:

рдЧреНрд░рд╛рд╕рд╣реЙрдкрд░ = рдХреБрдЬрд╝рдиреЗрддреНрд╕реЛрд╡, рдиреЗрдЪрд╛рдПрд╡ рдФрд░ рдХрдВрдкрдиреАред



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

рдлрд╝реАрд▓реНрдбреНрд╕ рдЧреИрд▓реЛрдЬрд╝


рдЧрд▓рд╛рдЗрд╕ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЕрдВрдХрдЧрдгрд┐рдд рдмрд╣реБрдкрдж рдЕрдВрдХрдЧрдгрд┐рдд рд╣реИ, рдЕрд░реНрдерд╛рдд рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдПрдХ рдмрд╣реБрдкрдж рд╣реИред рдХрд┐рд╕реА рднреА рдСрдкрд░реЗрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рднреА рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдПрдХ рддрддреНрд╡ рд╣реИред рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЧрд╛рд▓реНрд╡рд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рд╣реЛрддреА рд╣реИред рдХреНрд╖реЗрддреНрд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдХреБрдЫ рдЕрднрд╛рдЬреНрдп рд╕рдВрдЦреНрдпрд╛ p рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдлреАрд▓реНрдб рдСрд░реНрдбрд░, рдЕрд░реНрдерд╛рддреНред рдЗрд╕рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рд╛рдХреГрддрд┐рдХ рдбрд┐рдЧреНрд░реА рд╣реИ pm , рдЬрд╣рд╛рдВ m where N. m = 1 рдХреЗ рд▓рд┐рдП, рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рд░рд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдПрдо> 1, рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЧрдарди рдХреЗ рд▓рд┐рдП, рдбрд┐рдЧреНрд░реА рдореАрдЯрд░ рдХреА рдПрдХ рдмрд╣реБрдкрдж рдмрдирд╛рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдРрд╕реЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред Gf(pm) - рдЧреИрд▓реЛрдЬ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдкрджрдирд╛рдоред рдмрд╣реБрдкрдж рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╕рд░рд▓ (рдЕрднрд╛рдЬреНрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирддрд╛ рд╕реЗ рдпрд╣ 1 рд╕реЗ рд╡рд┐рднрд╛рдЬреНрдп рд╣реИ рдФрд░ рд╢реЗрд╖ рдХреЗ рдмрд┐рдирд╛ рд╕реНрд╡рдпрдВ)ред рдЪреВрдВрдХрд┐ рдХрд┐рд╕реА рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдПрдХ рдмрд╛рдЗрдЯ 8 рдмрд┐рдЯ рд╣реИ, рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдВ Gf(28) рдФрд░ рдЙрддреНрдкрдиреНрди рдмрд╣реБрдкрдж:

x8+x7+x6+x+1.


рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд░рд▓ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ Gf(23) рдмрд╣реБрдкрдж рдкреИрджрд╛ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде f(x)=x3+x+1 ред

рдЬреЛрдбрд╝ рдЖрдкрд░реЗрд╢рди


рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдкрд░реЗрд╢рди рд╣реИ, рдЬреЛ рдЧрд╛рд▓реНрд╡рд╛ рдХреНрд╖реЗрддреНрд░ рдЕрдВрдХрдЧрдгрд┐рдд рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдЬреЛрдбрд╝ рдореЛрдбреБрд▓реЛ 2 (.) рд╣реИред

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

HOR рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕рддреНрдп рддрд╛рд▓рд┐рдХрд╛



рдПрдХ рдЙрджрд╛рд╣рд░рдг: 5+3=101+011=1102=610

рдмрд╣реБрдкрдж рд░реВрдк рдореЗрдВ, рдпрд╣ рдСрдкрд░реЗрд╢рди рдЬреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛

(x2+1)+(x+1)=x2+x=1102=610



рдЧреБрдгрди рдХреНрд░рд┐рдпрд╛


рдЧреБрдгрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдмрд╣реБрдкрдж рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

5=1012=1тИЧx2+0тИЧx1+1тИЧx0=x2+1



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

рдмрд╣реБрдкрдж рд░реВрдк рдореЗрдВ рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЧреБрдгрд╛ рдХрд░реЗрдВ:

5тИЧ7=(x2+1)тИЧ(x2+x+1)=x4+x3+x2+x2+x+1=


=x4+x3+x+1=110112=2710


рдЧреБрдгрди рдкрд░рд┐рдгрд╛рдо 27 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдирд╣реАрдВ рд╣реИред Gf(23) (рдЗрд╕рдореЗрдВ 0 рд╕реЗ 7 рддрдХ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЙрддреНрдкрдиреНрди рдмрд╣реБрдкрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдпрд╣ рднреА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ x рд╕рдореАрдХрд░рдг рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ f(x)=x3+x+1=0 рддреЛ



рдЪрд▓реЛ рдПрдХ рдЧреБрдгрди рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ:



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

рдПрдХ рдЙрджрд╛рд╣рд░рдг:

52=(x2+1)2=x4+x2+x2+1=x4+x2+x+x2+x+1=


=x(x3+x+1)+x2+x+1=x2+x+1=1112=710



рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдбрд┐рдЧреНрд░реА рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:



рдбрд┐рдЧреНрд░реА рддрд╛рд▓рд┐рдХрд╛ рдЪрдХреНрд░реАрдп рд╣реИ: рд╕рд╛рддрд╡реАрдВ рдбрд┐рдЧреНрд░реА рд╢реВрдиреНрдп рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдард╡реАрдВ рдкрд╣рд▓реА рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдЖрджрд┐ред рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЗрд╕реЗ рдЪреЗрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдЬрд┐рди рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рд╣реИ, рд╡рд┐рд╢реЗрд╖рддрд╛ 2 рдХреЗ рд╕рд╛рде, рд╣рдореЗрд╢рд╛ 2 рдЪреБрдиреЗрдВред рдЖрджрд┐рдо рд╕рджрд╕реНрдп рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХреНрд╖реЗрддреНрд░ рдХреЗ рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдХреЛ рдЖрджрд┐рдо рд╕рджрд╕реНрдп рдХреА рдбрд┐рдЧреНрд░реА рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдПрдХ рдЙрджрд╛рд╣рд░рдг: 5=26.7=25

рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдФрд░ рдбрд┐рдЧреНрд░реА рддрд╛рд▓рд┐рдХрд╛ рдХреА рдЪрдХреНрд░реАрдпрддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд╣рдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ:

5тИЧ7=26тИЧ25=2(6+5)=2(11mod7)=24=6


рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЧ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рдЧрдгрдирд╛ рдХреА рдереАред

рдЕрдм рдЪрд▓реЛ рд╡рд┐рднрд╛рдЬрди рдХрд░рддреЗ рд╣реИрдВ:

6/5=24/26=2(4тИТ6)=2((тИТ2)mod7)=25=7


рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рднреА рд╕рддреНрдп рд╣реИред

рдЦреИрд░, рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рд╢рдХреНрддрд┐ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реБрдП рджреЗрдЦреЗрдВ:

52=(26)2=2(6тИЧ2)=2(12mod7)=25=7



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

рдЕрдм рд╡рд╛рдкрд╕ рдЕрдкрдиреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ Gf(28)

рдлрд╝реАрд▓реНрдб рдХрд╛ рд╢реВрдиреНрдп рддрддреНрд╡ рдПрдХ рд╣реИ, рдкрд╣рд▓рд╛ рдПрдХ рджреЛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ 2 рд╕реЗ 254 рд╡реЗрдВ рддрддреНрд╡ рдХреЗ рдмрд╛рдж рдХреЗ рддрддреНрд╡ рдХреА рдЧрдгрдирд╛ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИ, 2 рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рддрддреНрд╡ рдлрд╝реАрд▓реНрдб рдХреЗ рдмрд╛рд╣рд░ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЗрд╕рдХрд╛ рдорд╛рди рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ (28тИТ1) рдлрд┐рд░ XOR рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ 19510 , рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрдХрд╛рдЯреНрдп рдмрд╣реБрдкрдж рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИ x8+x7+x6+x+1=28+27++26+2+1=451 , рд╣рдо рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ 451тИТ256=$19 ред рдФрд░ 255 рд╡рд╛рдВ рддрддреНрд╡ рдлрд┐рд░ рд╕реЗ рд╣реИред 1. рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдлрд╝реАрд▓реНрдб рд╣реИ рдЬрд┐рд╕рдореЗрдВ 256 рддрддреНрд╡ рд╣реИрдВ, рдпрд╛рдиреА рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ, рдФрд░ рд╣рдордиреЗ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рд╣реИред



рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рджреЛ рдХреА рд╢рдХреНрддрд┐рдпреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ Gf(28)

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

Feistel рдиреЗрдЯрд╡рд░реНрдХ


Feistel Network рдПрдХ рдмреНрд▓реЙрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкрджреНрдзрддрд┐ рд╣реИ рдЬреЛ 1971 рдореЗрдВ IBM рдкрд░ Horst Feistel рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИ рдереАред рдЖрдЬ Feistel рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЖрдзрд╛рд░ рд╣реИред

Feistel рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдкрд╖реНрдЯ-рдкрд╛рда рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ:

  1. рдмреНрд▓реЙрдХ рдХреЛ рджреЛ рд╕рдорд╛рди рднрд╛рдЧреЛрдВ рдореЗрдВ рдмрд╛рдВрдЯрд╛ рдЧрдпрд╛ рд╣реИ - рдмрд╛рдПрдВ L рдФрд░ рджрд╛рдПрдВ Rред
  2. рдмрд╛рдИрдВ рдЙрдк-рдмреНрд▓реЙрдХ L рдХреЛ рдХреБрдВрдЬреА K: X = f (L, K) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рдВрдХреНрд╢рди f рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ, рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  3. рдкрд░рд┐рдгрд╛рдореА рд╕рдмрдмреНрд▓реЙрдХ рдПрдХреНрд╕ рдХреЛ рд╕рд╣реА рд╕рдмрдмреНрд▓реЙрдХ рдЖрд░ рдХреЗ рд╕рд╛рде рдореЛрдбреБрд▓реЛ 2 рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддрд╛ рд╣реИ: рдПрдХреНрд╕ = рдПрдХреНрд╕ + рдЖрд░ред
  4. рдкрд░рд┐рдгрд╛рдореА рд╣рд┐рд╕реНрд╕реЗ рдЖрдкрд╕ рдореЗрдВ рдЬреБрдбрд╝реЗ рдФрд░ рдЪрд┐рдкрдХреЗ рд╣реЛрддреЗ рд╣реИрдВред

рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЗрд╕ рдХреНрд░рдо рдХреЛ Feistel cell рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЪрд┐рддреНрд░рд╛ 1. Feistel рд╕реЗрд▓

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

рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо


рдЕрдм рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрдЪрд╛рд▓рди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВ рдФрд░ рдореБрдЦреНрдп рд╡рд┐рд╖рдп рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдЕрд░реНрдерд╛рддреН, рдЧреНрд░рд╛рд╕рд╣реЙрдкрд░ рдХреНрд░рд┐рдкреНрдЯреЛ-рдПрд▓реНрдЧреЛрд░рд┐рджрдоред

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

  1. рдПрдХ рдХреБрдВрдЬреА рдФрд░ рдПрдХ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рдПрдХ рдЧреЛрд▓ рдХреБрдВрдЬреА рдпрд╛ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ XOR рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди;
  2. рдЧреИрд░-рд░реИрдЦрд┐рдХ рд░реВрдкрд╛рдВрддрд░рдг, рдЬреЛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдмрд╛рдЗрдЯ рдХрд╛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИ;
  3. рд░реИрдЦрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрдиред рдкреНрд░рдЦрдВрдб рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЗрдЯ рдХреЛ рдЧреЙрд▓реЙрдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ 148 рдЧреБрдгрдХреЛрдВ (148, 32, 133, 16, 194, 192, 1, 251, 1, 192, 194, 16, 133, 32, 148, 1) рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╛рдЗрдЯ рд╕рдВрдЦреНрдпрд╛ (15 рд╡реАрдВ рд╕реЗ 0 рд╡реАрдВ рддрдХ рдХреЗ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдореЙрдбреБрд▓реЛ 2 рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмреНрд▓реЙрдХ рдХреЗ рд╕рднреА 16 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдирд┐рдореНрди рдХреНрд░рдо рдХреА рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдЦреНрдпрд╛ рд░реАрдб рдмрд╛рдЗрдЯ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИред



рдЕрдВрддрд┐рдо рджрд╕рд╡рд╛рдВ рджреМрд░ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ XOR рдСрдкрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИред

рдЧреНрд░рд╛рд╕рд╣реЙрдкрд░ рдПрдХ рдмреНрд▓реЙрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ, рдпрд╣ 128 рдмрд┐рдЯреНрд╕ рдпрд╛ 16 рдмрд╛рдЗрдЯреНрд╕ рд▓рдВрдмреЗ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЦреНрдп рд▓рдВрдмрд╛рдИ 256 рдмрд┐рдЯреНрд╕ (32 рдмрд╛рдЗрдЯреНрд╕) рд╣реИред


рдЪрд┐рддреНрд░рд╛ 2. рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреА рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рд╕реНрдХреАрдо

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

рдЧреЛрд▓ рдХреБрдВрдЬреА рдЧрдарди


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


рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдЧреЛрд▓) рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛

рдпрджрд┐ рд╣рдо рдЪрд┐рддреНрд░ 1 рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмрд╛рдпрд╛рдБ рдЙрдк-рдЦрдВрдб L, рдореВрд▓ рдХреБрдВрдЬреА рдХрд╛ рдмрд╛рдпрд╛рдБ рдЖрдзрд╛ рднрд╛рдЧ рд╣реИ, рджрд╛рдпрд╛рдБ рдЙрдк-рдЦрдВрдб R рдореВрд▓ рдХреБрдВрдЬреА рдХрд╛ рджрд╛рд╣рд┐рдирд╛ рдЖрдзрд╛ рд╣реИ, K рдирд┐рд░рдВрддрд░ CE рд╣реИ, рдлрд╝рдВрдХреНрд╢рди f рдХрд╛ рд╕рдВрдЪрд╛рд▓рди R XOR Ci, рдЧреИрд░-рд░реЗрдЦреАрдп рдкрд░рд┐рд╡рд░реНрддрди, рд░реИрдЦрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЕрдиреБрдХреНрд░рдо рд╣реИред

рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ L- рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╕реА рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рдЪрд▓реЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
рдкрд╣рд▓реЗ рдХрд╛рдВрд╕реНрдЯреЗрдмрд▓ C1=110=000000012=0116 рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдорд╛рд░реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди 16 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмреНрд▓реЙрдХ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдирд┐рд░рдВрддрд░ рдХреЛ рдкреВрд░рдХ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЕрд░реНрдерд╛рддреН рджрд╛рдИрдВ рдУрд░ 15 рд╢реВрдиреНрдп рдмрд╛рдЗрдЯреНрд╕ рдЬреЛрдбрд╝реЗрдВ, рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ

C1=01000000000000000000000000000000


рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ (1, 148, 32, 133, 16, 194, 192, 1, 251, 1, 192, 194, 16, 133, 32, 148) рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВ:

a15=a15тИЧ148+a14тИЧ32+a13тИЧ133+a12тИЧ16+


+a11тИЧ194+a10тИЧ192+a9тИЧ1+a8тИЧ251+a7тИЧ1+a6тИЧ192+


+a5тИЧ194+a4тИЧ16+a3тИЧ133+a2тИЧ32+a1тИЧ148+a0тИЧ1


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

C1=00000000000000000000000000000001


рдЙрд╕реА рдСрдкрд░реЗрд╢рди рдХреЛ рджреЛрд╣рд░рд╛рдПрдВред рдЗрд╕ рдмрд╛рд░ a15=1 , рдЕрдиреНрдп рд╕рднреА рдмрд╛рдЗрдЯреНрд╕ 0 рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рд╢рдмреНрдж рд╢рд░реНрддреЛрдВ рд╕реЗ рдмрдирд╛ рд╣реБрдЖ рд╣реИ a15тИЧ148=1тИЧ148=14810=9416 рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:

C1=00000000000000000000000000000194


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

a15тИЧ148+a14тИЧ32=148тИЧ148+1тИЧ32=


=10010100тИЧ10010100+00000001тИЧ00100000=


=(x7+x4+x2)тИЧ(x7+x4+x2)+1тИЧx5=x14+x8+x4+x5=


=x6(x8+x7+x6+x+1)+x13+x12+x7+x6+x8+x4+x5=


=x5(x8+x7+x6+x+1)+x11+x5+x7+x8+x4+x5=


=x3(x8+x7+x6+x+1)+x10+x9+x3+x8+x7=


=x2(x8+x7+x6+x+1)+x2+x7=x7+x2=13210


13210=8416


рдбрд┐рдЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕реЗ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

148тИЧ148+1тИЧ32=245тИЧ245+25=290+25=164+32=132


C1=00000000000000000000000000019484


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдм рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░рдВрддрд░ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 16 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ

C1=000000000000000000000000019484DD


C1=0000000000000000000000019484DD10


C1=00000000000000000000019484DD10BD


C1=000000000000000000019484DD10BD27


C1=0000000000000000019484DD10BD275D


C1=00000000000000019484DD10BD275DB8


C1=000000000000019484DD10BD275DB87A


C1=0000000000019484DD10BD275DB87A48


C1=00000000019484DD10BD275DB87A486C


C1=000000019484DD10BD275DB87A486C72


C1=0000019484DD10BD275DB87A486C727


C1=00019484DD10BD275DB87A486C7276A2


рдФрд░ рдЕрдВрддрд┐рдо рд╕реНрдерд┐рд░рд╛рдВрдХ:

C1=019484DD10BD275DB87A486C7276A2E6


рдЕрдиреНрдп рд╕реНрдерд┐рд░рд╛рдВрдХ:

C2=02EBCB7920B94EBAB3F490D8E4EC87DC


C3=037F4FA4300469E70B8ED8B4969A25B2


C4=041555F240B19CB7A52BE3730B1BCD7B


C5=0581D12F500CBBEA1D51AB1F796D6F15


C6=06FE9E8B6008D20D16DF73ABEFF74AA7


C7=076A1A5670B5F550AEA53BC79D81E8C9


C8=082AAA2780A1FBAD895605E6163659F6


C9=09BE2EFA901CDCF0312C4D8A6440FB98


C10=0AC1615EA018B5173AA2953EF2DADE2A


C11=0B55E583B0A5924A82D8DD5280AC7C44


C12=0C3FFFD5C010671A2C7DE6951D2D948D


C13=0DAB7B08D0AD40479407AEF96F5B36E3


C14=0ED434ACE0A929A09F89764DF9C11351


C15=0F40B071F0140EFD27F33E218BB7B13F


C16=1054974EC3813599D1AC0A0F2C6CB22F


C17=11C01393D33C12C469D642635E1A1041


C18=12BF5C37E3387B2362589AD7C88035F3


C19=132BD8EAF3855C7EDA22D2BBBAF6979D


C20=1441C2BC8330A92E7487E97C27777F54


C21=15D54661938D8E73CCFDA1105501DD3A


C22=16AA09C5A389E794C77379A4C39BF8888


C23=173E8D18B334C0C97F0931C8B1ED5AE6


C24=187E3D694320CE3458FA0FE93A5AEBD9


C25=19EAB9B4539DE969E0804785482C49B7


C26=1A95F6106399808EEB0E9F31DEB66C05


C27=1B0172CD7324A7D35374D75DACC0CE6B


C28=1C6B689B03915283FD1EC9A314126A2


C29=1DFFEC46132C75DE45ABA4F6433784CC


C30=1E80A3E223281C394E257C42D5ADA17E


C31=1F14273F33953B64F65F342EA7DB0310


C32=20A8ED9C45C16AF1619B141E58D8A75E



рдЕрдм рд╣рдо рдКрдкрд░ рдкреНрд░рд╕реНрддреБрдд рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЧреЛрд▓ рдХреБрдВрдЬреА рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВрдЧреЗ, рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рд▓реЗрдВрдЧреЗ:

K=7766554433221100FFEEDDCCBBAA9988


EFCDAB896745230101252547698BADCFE


рддреЛ

K1=7766554433221100FFEEDDCCBBAA9988


K2=EFCDAB89674523011032547698BADCFE


K1 Feistel рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдмрд╛рдпрд╛рдВ рд╕рдм-рдмреНрд▓реЙрдХ рд╣реЛрдЧрд╛, рдФрд░ K2 - рд╕рд╣реА рд╣реИред
рдЪрд▓реЛ рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВ K1+C1
рдкрд╣рд▓рд╛ рдмрд╛рдЗрдЯ K1 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ 7716=011101112
рдкрд╣рд▓рд╛ рдмрд╛рдЗрдЯ C1 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ 0116=000000012

011101112+000000012=011101102=7616


рд╢реЗрд╖ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдЙрд╕реА рддрд░реАрдХреЗ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк X(K1,C1)=K1+C1 :

X(K1,C1)=76F2D199239F365D479495A0C9DC3BE



рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ nonlinear рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ S(X(K1,C1)) ред рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


рдиреЙрдирд▓рд╛рдЗрдирд░ рд░реВрдкрд╛рдВрддрд░рдг рддрд╛рд▓рд┐рдХрд╛

рд╕рдВрдЦреНрдпрд╛ 0 рдХреЛ 252, 1 рдХреЛ 238, 17 рдХреЛ 119, рдЖрджрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

7616=11810


S(118)=13810=8A16


S(X(K1,C1))=8A741BE85A4A8FB7AB7A94A737CA9809


рдЕрдм рдПрдХ рд░реИрдЦрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ L(S(X(K1,C1))) , рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рд╣рдо рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ рд╣реИрдВ:

L(S(X(K1,C1)))=A644615E1D0757926A5DB79D9940093D


Feistel рд╕реЗрд▓ рдХреА рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдо XOR рдХреЛ рд╕рд╣реА рд╕рдм-рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН K2 :

X(L(S(X(K1,C1)))),K2)=4989CAD77A4274937A6FE3EB01FAD5C3


рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкрд╣рд▓реЗ Feistel рд╕реЗрд▓ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ:

EFCDAB89674523011032547698BADCFE4989CAD77A4274937A6FE3EB01FAD5C3


рдпрд╣ рдорд╛рди рдЖрдзрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реА рдлрд┐рд╕реНрдЯрд▓ рд╕реЗрд▓ рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рджреВрд╕рд░рд╛ рдХрдВрдЯреАрдиреНрдпреВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ C2 ред рдЖрда рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд 2 рдХреБрдВрдЬреА рдорд┐рд▓рддреА рд╣реИрдВ K3 рдФрд░ K4 ред рд╣рдо рдЙрдирдХреЗ рд╕рд╛рде Feistel рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЖрда рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВрдЧреЗ, рдЕрдЧрд▓реА рдХреБрдВрдЬреА рдЬреЛрдбрд╝реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдкреНрд░рдореБрдЦ рдЬреЛрдбрд╝реА рдкреНрд░рддрд┐ рдЖрда рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ, рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкрд╣рд▓реА рдЬреЛрдбрд╝реА рд╣реИ, рдлрд┐рд░ 32 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рд░рдВрддрд░ рдХреЗ рд╕рд╛рдеред

рд╢реЗрд╖ рдХреБрдВрдЬреА:

K3=448CC78CEF6A8D2243436915534831DB


K4=04FD9F0AC4ADEB1568ECCFE9D853453D


K5=ACF129F44692E5D3285E4AC468646457


K6=1B58DA3428E832B532645C16359407BD


K7=B198005A26275770DE45877E7540E651


K8=84F98622A2912AD73EDD9F7B0125795A


K9=17E5B6CD732FF3A52331C77853E244BB


K10=43404A8EA8BA5D755BF4BC1674DDE972



рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рдмреНрд▓реЙрдХ рдХрд░реЗрдВ


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

рдкреНрд▓реЗрдирдЯреЗрдХреНрд╕реНрдЯ рдмреНрд▓реЙрдХ рд▓реЗрдВ:

T=8899AABBCCDDEEFF0077665544332211


рдПрдХреНрд╕, рдПрд╕, рдПрд▓ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ

X(T,K1)=FFFFFFFFFFFFFFFFFFFFFF99BB99FF99BB99


S(X(T,K1))=B6B6B6B6B6B6B6B6B6B6E87DE8B6E87DE


L(S(X(T,K1)))=30081449922F4ACFA1B055E386B697E2


T1=30081449922F4ACFA1B055E386B697E2


X(T1,K2)=DFC5BFC0F56A69CEB18201951E0C4B1C


S(X(T1,K2))=61AC3B07F47891E74524EE945F23A214


L(S(X(T1,K2)))=7290C6A158426FB396D562087A495E28


T2=7290C6A158426FB396D562087A495E28


рдФрд░ рдЗрд╕реА рддрд░рд╣, рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

T10=CDEDD4B9428D465A3024BCBE909D677F



рдмреНрд▓реЙрдХ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди


рдкрд╛рда рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд▓реНрдЯреЗ рдХреНрд░рдо рдореЗрдВ рдЙрд▓рдЯрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЪрд┐рддреНрд░ 2 рджреЗрдЦреЗрдВ)ред

рдПрдХреНрд╕рдУрдЖрд░ рдСрдкрд░реЗрд╢рди рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ, рдПрд╕ рдХреЗ рдЙрд▓рдЯ рдСрдкрд░реЗрд╢рди рдПрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИ:


рдЙрд▓рдЯрд╛ рдиреЙрдирд▓рд╛рдЗрдирд┐рдпрд░ рдкрд░рд┐рд╡рд░реНрддрди рддрд╛рд▓рд┐рдХрд╛

рдлрд╝рдВрдХреНрд╢рди L рдХрд╛ рд╡реНрдпреБрддреНрдХреНрд░рдо рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛:

a0=a15тИЧ148+a14тИЧ32+a13тИЧ133+a12тИЧ16+


+a11тИЧ194+a10тИЧ192+a9тИЧ1+a8тИЧ251+a7тИЧ1+a6тИЧ192+a5тИЧ194+


+a4тИЧ16+a3тИЧ133+a2тИЧ32+a1тИЧ148+a0тИЧ1


рдФрд░ рд╡рд░рд┐рд╖реНрда рд╕реНрддрд░ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдмрджрд▓рд╛рд╡ред (рдСрдкрд░реЗрд╢рди 16 рдмрд╛рд░ рджреЛрд╣рд░рд╛рдПрдВ)

рдЬрд╛рд╡рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЖрд╡рд╢реНрдпрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ

static final int BLOCK_SIZE = 16; //   //     static final byte[] Pi = { (byte) 0xFC, (byte) 0xEE, (byte) 0xDD, 0x11, (byte) 0xCF, 0x6E, 0x31, 0x16, (byte) 0xFB, (byte) 0xC4, (byte) 0xFA, (byte) 0xDA, 0x23, (byte) 0xC5, 0x04, 0x4D, (byte) 0xE9, 0x77, (byte) 0xF0, (byte) 0xDB, (byte) 0x93, 0x2E, (byte) 0x99, (byte) 0xBA, 0x17, 0x36, (byte) 0xF1, (byte) 0xBB, 0x14, (byte) 0xCD, 0x5F, (byte) 0xC1, (byte) 0xF9, 0x18, 0x65, 0x5A, (byte) 0xE2, 0x5C, (byte) 0xEF, 0x21, (byte) 0x81, 0x1C, 0x3C, 0x42, (byte) 0x8B, 0x01, (byte) 0x8E, 0x4F, 0x05, (byte) 0x84, 0x02, (byte) 0xAE, (byte) 0xE3, 0x6A, (byte) 0x8F, (byte) 0xA0, 0x06, 0x0B, (byte) 0xED, (byte) 0x98, 0x7F, (byte) 0xD4, (byte) 0xD3, 0x1F, (byte) 0xEB, 0x34, 0x2C, 0x51, (byte) 0xEA, (byte) 0xC8, 0x48, (byte) 0xAB, (byte) 0xF2, 0x2A, 0x68, (byte) 0xA2, (byte) 0xFD, 0x3A, (byte) 0xCE, (byte) 0xCC, (byte) 0xB5, 0x70, 0x0E, 0x56, 0x08, 0x0C, 0x76, 0x12, (byte) 0xBF, 0x72, 0x13, 0x47, (byte) 0x9C, (byte) 0xB7, 0x5D, (byte) 0x87, 0x15, (byte) 0xA1, (byte) 0x96, 0x29, 0x10, 0x7B, (byte) 0x9A, (byte) 0xC7, (byte) 0xF3, (byte) 0x91, 0x78, 0x6F, (byte) 0x9D, (byte) 0x9E, (byte) 0xB2, (byte) 0xB1, 0x32, 0x75, 0x19, 0x3D, (byte) 0xFF, 0x35, (byte) 0x8A, 0x7E, 0x6D, 0x54, (byte) 0xC6, (byte) 0x80, (byte) 0xC3, (byte) 0xBD, 0x0D, 0x57, (byte) 0xDF, (byte) 0xF5, 0x24, (byte) 0xA9, 0x3E, (byte) 0xA8, (byte) 0x43, (byte) 0xC9, (byte) 0xD7, 0x79, (byte) 0xD6, (byte) 0xF6, 0x7C, 0x22, (byte) 0xB9, 0x03, (byte) 0xE0, 0x0F, (byte) 0xEC, (byte) 0xDE, 0x7A, (byte) 0x94, (byte) 0xB0, (byte) 0xBC, (byte) 0xDC, (byte) 0xE8, 0x28, 0x50, 0x4E, 0x33, 0x0A, 0x4A, (byte) 0xA7, (byte) 0x97, 0x60, 0x73, 0x1E, 0x00, 0x62, 0x44, 0x1A, (byte) 0xB8, 0x38, (byte) 0x82, 0x64, (byte) 0x9F, 0x26, 0x41, (byte) 0xAD, 0x45, 0x46, (byte) 0x92, 0x27, 0x5E, 0x55, 0x2F, (byte) 0x8C, (byte) 0xA3, (byte) 0xA5, 0x7D, 0x69, (byte) 0xD5, (byte) 0x95, 0x3B, 0x07, 0x58, (byte) 0xB3, 0x40, (byte) 0x86, (byte) 0xAC, 0x1D, (byte) 0xF7, 0x30, 0x37, 0x6B, (byte) 0xE4, (byte) 0x88, (byte) 0xD9, (byte) 0xE7, (byte) 0x89, (byte) 0xE1, 0x1B, (byte) 0x83, 0x49, 0x4C, 0x3F, (byte) 0xF8, (byte) 0xFE, (byte) 0x8D, 0x53, (byte) 0xAA, (byte) 0x90, (byte) 0xCA, (byte) 0xD8, (byte) 0x85, 0x61, 0x20, 0x71, 0x67, (byte) 0xA4, 0x2D, 0x2B, 0x09, 0x5B, (byte) 0xCB, (byte) 0x9B, 0x25, (byte) 0xD0, (byte) 0xBE, (byte) 0xE5, 0x6C, 0x52, 0x59, (byte) 0xA6, 0x74, (byte) 0xD2, (byte) 0xE6, (byte) 0xF4, (byte) 0xB4, (byte) 0xC0, (byte) 0xD1, 0x66, (byte) 0xAF, (byte) 0xC2, 0x39, 0x4B, 0x63, (byte) 0xB6 }; //     static final byte[] reverse_Pi = { (byte) 0xA5, 0x2D, 0x32, (byte) 0x8F, 0x0E, 0x30, 0x38, (byte) 0xC0, 0x54, (byte) 0xE6, (byte) 0x9E, 0x39, 0x55, 0x7E, 0x52, (byte) 0x91, 0x64, 0x03, 0x57, 0x5A, 0x1C, 0x60, 0x07, 0x18, 0x21, 0x72, (byte) 0xA8, (byte) 0xD1, 0x29, (byte) 0xC6, (byte) 0xA4, 0x3F, (byte) 0xE0, 0x27, (byte) 0x8D, 0x0C, (byte) 0x82, (byte) 0xEA, (byte) 0xAE, (byte) 0xB4, (byte) 0x9A, 0x63, 0x49, (byte) 0xE5, 0x42, (byte) 0xE4, 0x15, (byte) 0xB7, (byte) 0xC8, 0x06, 0x70, (byte) 0x9D, 0x41, 0x75, 0x19, (byte) 0xC9, (byte) 0xAA, (byte) 0xFC, 0x4D, (byte) 0xBF, 0x2A, 0x73, (byte) 0x84, (byte) 0xD5, (byte) 0xC3, (byte) 0xAF, 0x2B, (byte) 0x86, (byte) 0xA7, (byte) 0xB1, (byte) 0xB2, 0x5B, 0x46, (byte) 0xD3, (byte) 0x9F, (byte) 0xFD, (byte) 0xD4, 0x0F, (byte) 0x9C, 0x2F, (byte) 0x9B, 0x43, (byte) 0xEF, (byte) 0xD9, 0x79, (byte) 0xB6, 0x53, 0x7F, (byte) 0xC1, (byte) 0xF0, 0x23, (byte) 0xE7, 0x25, 0x5E, (byte) 0xB5, 0x1E, (byte) 0xA2, (byte) 0xDF, (byte) 0xA6, (byte) 0xFE, (byte) 0xAC, 0x22, (byte) 0xF9, (byte) 0xE2, 0x4A, (byte) 0xBC, 0x35, (byte) 0xCA, (byte) 0xEE, 0x78, 0x05, 0x6B, 0x51, (byte) 0xE1, 0x59, (byte) 0xA3, (byte) 0xF2, 0x71, 0x56, 0x11, 0x6A, (byte) 0x89, (byte) 0x94, 0x65, (byte) 0x8C, (byte) 0xBB, 0x77, 0x3C, 0x7B, 0x28, (byte) 0xAB, (byte) 0xD2, 0x31, (byte) 0xDE, (byte) 0xC4, 0x5F, (byte) 0xCC, (byte) 0xCF, 0x76, 0x2C, (byte) 0xB8, (byte) 0xD8, 0x2E, 0x36, (byte) 0xDB, 0x69, (byte) 0xB3, 0x14, (byte) 0x95, (byte) 0xBE, 0x62, (byte) 0xA1, 0x3B, 0x16, 0x66, (byte) 0xE9, 0x5C, 0x6C, 0x6D, (byte) 0xAD, 0x37, 0x61, 0x4B, (byte) 0xB9, (byte) 0xE3, (byte) 0xBA, (byte) 0xF1, (byte) 0xA0, (byte) 0x85, (byte) 0x83, (byte) 0xDA, 0x47, (byte) 0xC5, (byte) 0xB0, 0x33, (byte) 0xFA, (byte) 0x96, 0x6F, 0x6E, (byte) 0xC2, (byte) 0xF6, 0x50, (byte) 0xFF, 0x5D, (byte) 0xA9, (byte) 0x8E, 0x17, 0x1B, (byte) 0x97, 0x7D, (byte) 0xEC, 0x58, (byte) 0xF7, 0x1F, (byte) 0xFB, 0x7C, 0x09, 0x0D, 0x7A, 0x67, 0x45, (byte) 0x87, (byte) 0xDC, (byte) 0xE8, 0x4F, 0x1D, 0x4E, 0x04, (byte) 0xEB, (byte) 0xF8, (byte) 0xF3, 0x3E, 0x3D, (byte) 0xBD, (byte) 0x8A, (byte) 0x88, (byte) 0xDD, (byte) 0xCD, 0x0B, 0x13, (byte) 0x98, 0x02, (byte) 0x93, (byte) 0x80, (byte) 0x90, (byte) 0xD0, 0x24, 0x34, (byte) 0xCB, (byte) 0xED, (byte) 0xF4, (byte) 0xCE, (byte) 0x99, 0x10, 0x44, 0x40, (byte) 0x92, 0x3A, 0x01, 0x26, 0x12, 0x1A, 0x48, 0x68, (byte) 0xF5, (byte) 0x81, (byte) 0x8B, (byte) 0xC7, (byte) 0xD6, 0x20, 0x0A, 0x08, 0x00, 0x4C, (byte) 0xD7, 0x74 }; //    static final byte[] l_vec = { 1, (byte) 148, 32, (byte) 133, 16, (byte) 194, (byte) 192, 1, (byte) 251, 1, (byte) 192, (byte) 194, 16, (byte) 133, 32, (byte) 148 }; //     static byte[][] iter_C = new byte[32][16]; //     static byte[][] iter_key = new byte[10][64]; 

рдЖрдЗрдП рд╕рднреА рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдмрдирд╛рдПрдВ:

 //  X static private byte[] GOST_Kuz_X(byte[] a, byte[] b) { int i; byte[] c = new byte[BLOCK_SIZE]; for (i = 0; i < BLOCK_SIZE; i++) c[i] = (byte) (a[i] ^ b[i]); return c; } //  S static private byte[] GOST_Kuz_S(byte[] in_data) { int i; byte[] out_data = new byte[in_data.length]; for (i = 0; i < BLOCK_SIZE; i++) { int data = in_data[i]; if(data < 0) { data = data + 256; } out_data[i] = Pi[data]; } return out_data; } 

рдлрд╝рдВрдХреНрд╢рди рдПрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХрдИ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдПрдХ рдЧреИрд▓реНрд╡реЗрди рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЧреБрдгрди рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП, рдФрд░ рдПрдХ рдкрд╛рд▓реА рдХреЗ рд▓рд┐рдПред

 //     static private byte GOST_Kuz_GF_mul(byte a, byte b) { byte c = 0; byte hi_bit; int i; for (i = 0; i < 8; i++) { if ((b & 1) == 1) c ^= a; hi_bit = (byte) (a & 0x80); a <<= 1; if (hi_bit < 0) a ^= 0xc3; // x^8+x^7+x^6+x+1 b >>= 1; } return c; } //  R     ,    L- static private byte[] GOST_Kuz_R(byte[] state) { int i; byte a_15 = 0; byte[] internal = new byte[16]; for (i = 15; i >= 0; i--) { if(i == 0) internal[15] = state[i]; else internal[i - 1] = state[i]; a_15 ^= GOST_Kuz_GF_mul(state[i], l_vec[i]); } internal[15] = a_15; return internal; } static private byte[] GOST_Kuz_L(byte[] in_data) { int i; byte[] out_data = new byte[in_data.length]; byte[] internal = in_data; for (i = 0; i < 16; i++) { internal = GOST_Kuz_R(internal); } out_data = internal; return out_data; } 

рдЙрд▓рдЯрд╛ рдХрд╛рд░реНрдп:

 //  S^(-1) static private byte[] GOST_Kuz_reverse_S(byte[] in_data) { int i; byte[] out_data = new byte[in_data.length]; for (i = 0; i < BLOCK_SIZE; i++) { int data = in_data[i]; if(data < 0) { data = data + 256; } out_data[i] = reverse_Pi[data]; } return out_data; } static private byte[] GOST_Kuz_reverse_R(byte[] state) { int i; byte a_0; a_0 = state[15]; byte[] internal = new byte[16]; for (i = 1; i < 16; i++) { internal[i] = state[i - 1]; a_0 ^= GOST_Kuz_GF_mul(internal[i], l_vec[i]); } internal[0] = a_0; return internal; } static private byte[] GOST_Kuz_reverse_L(byte[] in_data) { int i; byte[] out_data = new byte[in_data.length]; byte[] internal; internal = in_data; for (i = 0; i < 16; i++) internal = GOST_Kuz_reverse_R(internal); out_data = internal; return out_data; } //    static private void GOST_Kuz_Get_C() { int i; byte[][] iter_num = new byte[32][16]; for (i = 0; i < 32; i++) { for(int j = 0; j < BLOCK_SIZE; j++) iter_num[i][j] = 0; iter_num[i][0] = (byte) (i+1); } for (i = 0; i < 32; i++) { iter_C[i] = GOST_Kuz_L(iter_num[i]); } } // ,     static private byte[][] GOST_Kuz_F(byte[] in_key_1, byte[] in_key_2, byte[] iter_const) { byte[] internal; byte[] out_key_2 = in_key_1; internal = GOST_Kuz_X(in_key_1, iter_const); internal = GOST_Kuz_S(internal); internal = GOST_Kuz_L(internal); byte[] out_key_1 = GOST_Kuz_X(internal, in_key_2); byte key[][] = new byte[2][]; key[0] = out_key_1; key[1] = out_key_2; return key; } //     public void GOST_Kuz_Expand_Key(byte[] key_1, byte[] key_2) { int i; byte[][] iter12 = new byte[2][]; byte[][] iter34 = new byte[2][]; GOST_Kuz_Get_C(); iter_key[0] = key_1; iter_key[1] = key_2; iter12[0] = key_1; iter12[1] = key_2; for (i = 0; i < 4; i++) { iter34 = GOST_Kuz_F(iter12[0], iter12[1], iter_C[0 + 8 * i]); iter12 = GOST_Kuz_F(iter34[0], iter34[1], iter_C[1 + 8 * i]); iter34 = GOST_Kuz_F(iter12[0], iter12[1], iter_C[2 + 8 * i]); iter12 = GOST_Kuz_F(iter34[0], iter34[1], iter_C[3 + 8 * i]); iter34 = GOST_Kuz_F(iter12[0], iter12[1], iter_C[4 + 8 * i]); iter12 = GOST_Kuz_F(iter34[0], iter34[1], iter_C[5 + 8 * i]); iter34 = GOST_Kuz_F(iter12[0], iter12[1], iter_C[6 + 8 * i]); iter12 = GOST_Kuz_F(iter34[0], iter34[1], iter_C[7 + 8 * i]); iter_key[2 * i + 2] = iter12[0]; iter_key[2 * i + 3] = iter12[1]; } } //    public byte[] GOST_Kuz_Encript(byte[] blk) { int i; byte[] out_blk = new byte[BLOCK_SIZE]; out_blk = blk; for(i = 0; i < 9; i++) { out_blk = GOST_Kuz_X(iter_key[i], out_blk); out_blk = GOST_Kuz_S(out_blk); out_blk = GOST_Kuz_L(out_blk); } out_blk = GOST_Kuz_X(out_blk, iter_key[9]); return out_blk; } //   public byte[] GOST_Kuz_Decript(byte[] blk) { int i; byte[] out_blk = new byte[BLOCK_SIZE]; out_blk = blk; out_blk = GOST_Kuz_X(out_blk, iter_key[9]); for(i = 8; i >= 0; i--) { out_blk = GOST_Kuz_reverse_L(out_blk); out_blk = GOST_Kuz_reverse_S(out_blk); out_blk = GOST_Kuz_X(iter_key[i], out_blk); } return out_blk; } 

рдЦреИрд░, рдФрд░ рдореБрдЦреНрдп рдХрд╛рд░реНрдп

 static byte[] key_1 = {0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x00, (byte) 0xff, (byte) 0xee, (byte) 0xdd, (byte) 0xcc, (byte) 0xbb, (byte) 0xaa, (byte) 0x99, (byte) 0x88}; static byte[] key_2 = {(byte) 0xef, (byte) 0xcd, (byte) 0xab, (byte) 0x89, 0x67, 0x45, 0x23, 0x01, 0x10, 0x32, 0x54, 0x76, (byte) 0x98, (byte) 0xba, (byte) 0xdc, (byte) 0xfe}; static byte[] blk = DatatypeConverter.parseHexBinary("8899aabbccddeeff0077665544332211"); public static void main(String[] args) { GOST_Kuz_Expand_Key(key_1, key_2); byte[] encriptBlok = GOST_Kuz_Encript(blk); System.out.println(DatatypeConverter.printHexBinary(encriptBlok)); byte[] decriptBlok = GOST_Kuz_Decript(encriptBlok); System.out.println(DatatypeConverter.printHexBinary(decriptBlok)); } 

рд╣рдордиреЗ рдкрд╛рда рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рд╕реАрдЦрд╛, рдЬрд┐рд╕рдХреА рд▓рдВрдмрд╛рдИ рдмреНрд▓реЙрдХ рдХреА рд▓рдВрдмрд╛рдИ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ; рдорд╛рдирдХ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрдИ рдореЛрдб рд╣реИрдВ - GOST 34.13-2015:

  • рд╕рд░рд▓ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореЛрдб (рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдХреЛрдбрдмреБрдХ, рдИрд╕реАрдмреА);
  • рдЧрд╛рдорд╛ рдореЛрдб (рдХрд╛рдЙрдВрдЯрд░, рд╕реАрдЯреАрдЖрд░);
  • рдЖрдЙрдЯрдкреБрдЯ рдлреАрдбрдмреИрдХ (рдЖрдЙрдЯрдкреБрдЯ рдлреАрдбрдмреИрдХ, рдУрдПрдлрдмреА) рдХреЗ рд╕рд╛рде рдЧрд╛рдорд╛ рдореЛрдб;
  • рд╕рд░рд▓ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд┐рдпрд░рд┐рдВрдЧ рдореЛрдб (рд╕рд┐рдлрд░ рдмреНрд▓реЙрдХ рдЪреЗрдирд┐рдВрдЧ, рд╕реАрдмреАрд╕реА);
  • рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ (рд╕рд┐рдлрд░ рдлреАрдбрдмреИрдХ, рд╕реАрдПрдлрдмреА) рдореЗрдВ рдлреАрдбрдмреИрдХ рдХреЗ рд╕рд╛рде рдЧрд╛рдорд╛ рдореЛрдб;
  • рд╕рдВрджреЗрд╢ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛрдб (рдореИрдХ) рдореЛрдбред

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

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

рдЕрдиреНрдп рд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдмрд╛рдж рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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


All Articles