DIY рд╣реЛрдореЛрдореЛрд░реНрдлрд┐рдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди

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

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

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

рд╣реЛрдореЛрдореЛрд░реНрдлрд┐рдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рдиред


рдХрд┐рд╕реА рднреА рдорд╛рдирдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рдгрд╛рд▓реА рдХреЛ рддреАрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕рдВрджреЗрд╢ Enc (M) рдФрд░ рдХреБрдЫ рдЧрдгрд┐рддреАрдп рдлрд╝рдВрдХреНрд╢рди f () рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдЗрдирдкреБрдЯ рд╣реИрдВ ред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдо 2 = рдПрдл (рдПрдо) рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕рдВрджреЗрд╢ рдПрди (рдПрдо 2 ) рд╣реИ ред

рдПрдХ рд╣реЛрдореЛрдореЛрд░реНрдлрд┐рдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╕реНрдХреАрдо рдХреЛ рд╕рд╣реА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдХрд┐рд╕реА рднреА рдкреНрд░рдореБрдЦ рдЬреЛрдбрд╝реА рдПрд╕рдХреЗ, рдкреАрдХреЗ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди f () рдХреЗ рд▓рд┐рдП , рд╕рд┐рдлрд░рдЯреЗрдХреН рд╕ рдХреЗ рдХрд┐рд╕реА рднреА рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП C = {c 1 , c 2 , .., c n } рдФрд░ рд╕рд╛рджреАрдЯреЗрдХреН рдЯ рдХреЗ рд╕реЗрдЯ = = {m 1 , m 2 , .., m n } рдЬреИрд╕реЗ рдХрд┐ C = Enc (M) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐ рд╕рдВрддреБрд╖реНрдЯ рд╣реИ:
рдпрджрд┐ рдЖрд░ = рдПрд╡рд▓ (рдкреАрдХреЗ, рд╕реА, рдПрдл) рддреЛ рдбреЗрд╕реАрдкреНрдЯ (рдПрд╕рдХреЗ, рдЖрд░) = рдПрдл (рдПрдо 1 , рдПрдо 2 , .., рдПрдо рдПрди )ред
рдЬреЗрдВрдЯреНрд░реА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдпреЛрдЬрдирд╛ рдЗрд╕ рд╢рд░реНрдд рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣реЛрдореЛрдореЛрд░реНрдлрд┐рдХ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЗрдВрдЯреНрд░реА рдпреЛрдЬрдирд╛


рд╣рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред
KeyGen
рдирд┐рдЬреА рдХреБрдВрдЬреА: рдмрдбрд╝реА рднреА рд╕рдВрдЦреНрдпрд╛ рдПрдиред
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА: рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ { 1 , 2 , .., рдПрдХ i } рдРрд╕рд╛ рд╣реИ рдХрд┐ рдПрдХ i mod N = 2e i , рдЬрд╣рд╛рдВ e i рд╕рдВрдЦреНрдпрд╛ N рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╣реИ ред
рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рд╕реЗ рд╣рдо рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ b = рдпрд╛рджреГрдЪреНрдЫрд┐рдХ-рд╕рдмрд╕реЗрдЯ-рдпреЛрдЧ {a i } рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред рд╕реВрдЪрдирд╛ рдХрд╛ 1 рдмрд┐рдЯ to {0,1} рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ
рд╕реА = рдмреА + рдПрдо
рдбрд┐рдХреНрд░рд┐рдкреНрдЯ
рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП, рд╣рдо рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ
рд╕реА рдореЙрдб рдПрди = рдПрдо + 2 * рдкреА рдИ рдореИрдВ
2 * рдирдВрдмрд░ рдИ i рдХреЛ рд╢реЛрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдЧрдгрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ рдПрди рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред
рдореЛрдбреБрд▓реЛ рджреЛ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдореВрд▓ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИред
eval
рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдбреАрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рд╕рд┐рдлрд░рдЯреЗрдХреНрд▓реЗрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпрд╣ рдпреЛрдЬрдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ, рдпрд╣ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХреЗрд╡рд▓ 1 рдмрд┐рдЯ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдПрдХ рдРрд╕реА рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рд╕реЗ рд╣рдо рд╕рдВрдЦреНрдпрд╛ рдХреЛ 15 рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХреЗрдВред
KeyGen
рдирд┐рдЬреА рдХреБрдВрдЬреА: рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдПрди , рдЬреИрд╕реЗ рдХрд┐ рдЬреАрд╕реАрдбреА (рдПрди, 15) = 1 ред
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА: рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ { 1 , 2 , .., рдПрдХ i } рдРрд╕рд╛ рд╣реИ рдХрд┐ рдПрдХ i mod N = 15e i , рдЬрд╣рд╛рдВ e i рд╕рдВрдЦреНрдпрд╛ N рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╣реИ ред
рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рд╕реЗ рд╣рдо рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ b = рдпрд╛рджреГрдЪреНрдЫрд┐рдХ-рд╕рдмрд╕реЗрдЯ-рдпреЛрдЧ {a i } рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред 0 рд╕реЗ 15 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ
рд╕реА = рдмреА + рдПрдо
рдбрд┐рдХреНрд░рд┐рдкреНрдЯ
рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП, рд╣рдо рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ
C mod N = m + 15 * P e i
рдореЛрдбреБрд▓реЛ 15 рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдореВрд▓ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИред

рд╕реА # рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рдореБрдЦ рдкреАрдврд╝реА, рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
//  ,  k-   //     private BigInteger[] PublicKeyGenerate(BigInteger N, int k) { Random r = new Random(); byte[] rand = new byte[16]; BigInteger rem; for (int i = 0; i < 100; i++) { r.NextBytes(rand); PK[i] = new BigInteger(rand); PK[i] = (BigInteger.Abs(PK[i]) * N) + (k* r.Next(10, 100)); rem = BigInteger.Remainder(PK[i], N);; } return PK; } // ,   //   M    PK private BigInteger Encryption(BigInteger M, BigInteger[] PK) { BigInteger B = new BigInteger(0); BigInteger C = new BigInteger(0); Random r = new Random(); for (int i = 0; i < 100; i++) { if (r.Next(2) == 1) B = B + PK[i]; } C = M + B; return C; } // , C-, N- , //k-     private BigInteger Decryption(BigInteger C, BigInteger N, int k) { BigInteger M = new BigInteger(0); M = BigInteger.Remainder(C, N); return BigInteger.Remainder(M, k); } 

рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣рд╛рдВ рд╕реЗ 1000 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ ред

рдирд┐рд╖реНрдХрд░реНрд╖


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

рд╕реВрддреНрд░реЛрдВ рдХреЗ рд╣рд╡рд╛рд▓реЗ рд╕реЗ


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


All Articles