рдбрдореАрдЬ рдХреЗ рд▓рд┐рдП рд╡рд┐рднреЗрджрдХ рдХреНрд░рд┐рдкреНрдЯреЛрдирд╛рд▓рд┐рд╕рд┐рд╕

рдЫрд╡рд┐

FEAL рдХреЛрдб рдореЗрдВ DES рдХреЗ рд╕рдорд╛рди рддрд╛рдХрдд рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрдврд╝реА рд╣реБрдИ рдкреНрд░рдореБрдЦ рд▓рдВрдмрд╛рдИ (рдбреЗрд╕ рдореЗрдВ 56 рдмрд┐рдЯреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 64 рдмрд┐рдЯреНрд╕) рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред FEAL рд╕рд┐рдлрд░ рдореЗрдВ рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕ рдХрд╛ рдЕрдЪреНрдЫрд╛ рд╡рд┐рддрд░рдг рд╣реИ, рдЬреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреЗ рдХрд░реАрдм рд╣реИред рдФрд░ рдпрд╣ DES рдХреА рддреБрд▓рдирд╛ рдореЗрдВ FEAL рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рднреА рдмреЛрд▓рддрд╛ рд╣реИред
рдпрд╣ 1987 FEAL рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рд╣реИред

рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреБрдЫ рд╣реА рдорд┐рдирдЯреЛрдВ рдореЗрдВ рдкреВрд░реНрдг FEAL4 рдХреБрдВрдЬреА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдпрджрд┐ рдЦреБрд▓реЗ-рдмрдВрдж рдЧреНрд░рдВрдереЛрдВ рдХреЗ рдХреЗрд╡рд▓ 40 рдЬреЛрдбрд╝реЗ рд╣реИрдВред

рд╡рд┐рднреЗрджрдХ рдХреНрд░рд┐рдкреНрдЯреИрдирд╛рд▓рд┐рд╕рд┐рд╕


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

рдбреАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╣рдорд▓рд╛рд╡рд░ рдХрд╛ рд▓рдХреНрд╖реНрдп рдХреБрдВрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рджреЛрдиреЛрдВ рдХреБрдВрдЬреА (рдЬреЛ рдмрд╣реБрдд рджреБрд░реНрд▓рдн рд╣реИ) рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдВрдЬреА рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╕рдордп рдмрд╕ рдХреБрдЫ рд▓рд╛рдн рджреЗрддреЗ рд╣реИрдВред

рдпрд╣ рд╕рднреА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рджреЛ рдкреВрд░реНрд╡ рдЪрдпрдирд┐рдд рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ рдкреА 1 рдФрд░ рдкреА 2 рдХреЗ рд▓рд┐рдП, рд╣рдорд▓рд╛рд╡рд░ "рдЕрдВрддрд░" ╬ФP = P 1 P P 2 рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдФрд░ ╬ФP рдХреА рдорджрдж рд╕реЗ, рд╡рд╣ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ "рдЕрдВрддрд░" рдХреНрдпрд╛ рд╣реИ = C 1 .C 2 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред 100% рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рдЕрд╕рдВрднрд╡ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп will рд╣реЛрдЧрд╛ред рдХреЗрд╡рд▓ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЬреЛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд ╬ФP рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд░ рд╡рд┐рднрд┐рдиреНрди рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдХрд┐рд╕ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрд╣ рдЬреНрдЮрд╛рди рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдХреБрдВрдЬреА рдпрд╛ рд╕рдВрдкреВрд░реНрдг рдХреБрдВрдЬреА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЦреЛрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рддреАрди-рд░рд╛рдЙрдВрдб рдмреНрд▓реЙрдХ рд╕рд┐рдлрд░ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

рдЗрд╕ рд╕рд┐рдлрд░ рдореЗрдВ 64 рдмрд┐рдЯ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдФрд░ 128 рдмрд┐рдЯ рдХреБрдВрдЬреА рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рджреМрд░ рдкрд░, рдЗрдирдкреБрдЯ рдмреНрд▓реЙрдХ рдХреЛ 8 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ Sbox рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛ 64 рдмрд┐рдЯ рд╕рдмрдХреА рдЙрдкрдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлреЗрд░рдмрджрд▓ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдирд┐рдпрдорд┐рдд XOR рд╣реИред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдиреЗ рдЕрдВрддрд░ 0x80 рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдордирдорд╛рдирд╛ рдмрд╛рдЗрдЯ рдПрдХреНрд╕ 1 рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХреНрд╕ 2 = рдПрдХреНрд╕ 1 .80 рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛, рд╣рдорд▓рд╛рд╡рд░ Sbox рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ X 1 рдФрд░ X 2 рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ Y 1 рдФрд░ Y 2 рдХреЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдРрд╕реА рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реА X 1 рдФрд░ X 2 рдХреЗ рд▓рд┐рдП , рдЬрд┐рд╕рдХрд╛ рдЕрдВрддрд░ 80 рд╣реИ, рд╣рдорд▓рд╛рд╡рд░ рдЕрдВрддрд░ .Y рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реБрдП, рд╣рдорд▓рд╛рд╡рд░ рдПрдХ isY рдорд╛рди рдЪреБрдирддрд╛ рд╣реИ рдЬреЛ рд╣реЛрдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓реМрдЯрддреЗ рд╣реБрдП, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╕рднреА 256 рдЬреЛрдбрд╝реЗ X 1 рдФрд░ X 2 рдореЗрдВ рд╕реЗ 192 рдорд╛рдорд▓реЛрдВ рдореЗрдВ Y 1 = Y 2 = 02 рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐, рджрд┐рдП рдЧрдП 80X = 80 рдХреЗ рд▓рд┐рдП, рдорд╛рди 02Y = 02, 192/256 = 3/4 рд╣реИред рдпрд╣, рдмрджрд▓реЗ рдореЗрдВ, рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рджрд┐рдП рдЧрдП 80X = 80 рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рдпрд┐рдХрддрд╛ P 1 = 3/4, рджреЛ рдорд╛рди U 1 рдФрд░ U 2 , рдЬреИрд╕реЗ рдХрд┐ =U = 02, рджреВрд╕рд░реЗ рджреМрд░ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдорд┐рд▓реЗрдЧрд╛ред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХреБрдВрдЬреА рд╡рд┐рднреЗрджрдХреЛрдВ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдЪреВрдВрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдЧреНрд░рдВрдереЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдФрд░ рдХреБрдВрдЬреА рдЕрдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рдг рдХрд░рдиреЗ рдкрд░ рдХреБрдВрдЬреА рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИ, XOR рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм byU рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреБрдВрдЬреА рдХреЗ рдмрд╛рдЗрдЯ рдХреЛ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рджреВрд╕рд░реЗ рд░рд╛рдЙрдВрдб рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд▓рд╛рд╡рд░ рдЗрдирдкреБрдЯ рдмрд╛рдЗрдЯреНрд╕ X 1 рдФрд░ X 2 рдХреЗ рдирдП 256 рдЬреЛрдбрд╝реЗ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ X 1 X X 2 = 02ред X 1 рдФрд░ X 2 рдХреА рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП Sbox рдлрд╝рдВрдХреНрд╢рди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдорд▓рд╛рд╡рд░ рдиреЗ рдиреЛрдЯрд┐рд╕ рджрд┐рдпрд╛ рдХрд┐ 64 рдорд╛рдорд▓реЛрдВ рдореЗрдВ 256 256Y = 88 рдореЗрдВ рд╕реЗред рдпрд╛рдиреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ abilityY = 88, рджрд┐рдП рдЧрдП 02X = 02 рдХреЗ рд▓рд┐рдП, P 2 = 64/256 = 1/4 рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреА рдПрдХ рд╕рд░рд▓ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдорд▓рд╛рд╡рд░ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдЗрдЯреНрд╕ X 1 рдФрд░ X 2 рдХреА рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рд┐рдлрд░ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рд╣реИ рдХрд┐ ╬ФX = 80, рдкреНрд░рд╛рдпрд┐рдХрддрд╛ P = P 1 * P 2 = 3/4/4/4 = 3 рдХреЗ рд╕рд╛рде / 16, рдЕрдВрддрд┐рдо рджреМрд░ рд╕реЗ рдкрд╣рд▓реЗ рд╕рд┐рдлрд░ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдВрддрд░ 88Y = 88 рд╣реИред

рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд╣рдорд▓рд╛рд╡рд░ рдХрдИ рдЬреЛрдбрд╝реЗ рдЧреНрд░рдВрдереЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ 80P = 808080808080 рдФрд░ рддреАрд╕рд░реЗ рд░рд╛рдЙрдВрдб рдЙрдкрдХреБрдВрдЬреА рдХреЗ рдмрд╛рдЗрдЯ-рд╡рд╛рд░ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред
рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдХреБрдВрдЬреА рдХреЗ рдкрд╣рд▓реЗ рдмрд╛рдЗрдЯ рдХреЛ рдХреИрд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛рдПред
рдкрд╣рд▓реЗ рд╕рдмрдХреА рдмрд╛рдЗрдЯ [0] рдХреЗ 256 рд╕рдВрднрд╛рд╡рд┐рдд рд╡реЗрд░рд┐рдПрдВрдЯ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ рдЬреЛрдбрд╝реА {C 1 , C 2 } рдХреЗ рд▓рд┐рдП, рд╣рдорд▓рд╛рд╡рд░ U 1 = Sbox (C 1 ub рдЙрдкрдХреБрдВрдЬреА [0]) рдФрд░ U 2 = Sbox (C 2 тКХ рдЙрдкрдХреБрдВрдЬреА) рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред [0])ред
рдпрджрд┐ рдЙрдкрдХреБрдВрдЬреА [0] рдХрд╛ рд╕рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ keyU рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп рд╣рд░ 16 рдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ 3 рдЬреЛрдбрд╝реЗ U 1 рдФрд░ U 2 88 рд╣реЛрдВрдЧреЗред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рдмрдХреА рдЙрдкрдХреБрдВрдЬреА рдХреЗ рд╕рдмрд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рдкрд╣рд▓реЗ рдмрд╛рдЗрдЯ рдХреЛ рдЪреБрдиреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдорд▓рд╛рд╡рд░ рджреВрд╕рд░реЗ рдмрд╛рдЗрдЯ рдореЗрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реА рддрд░рд╣ рддреАрд╕рд░реЗ рд░рд╛рдЙрдВрдб рдХреА рдкреВрд░реА рдХреБрдВрдЬреА рдЦреЛрд▓реЗрдЧрд╛ред

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

FEAL рд╕рд┐рдлрд░ рд╡рд┐рд╡рд░рдг


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

рд╕рд┐рдлрд░ рдореЗрдВ 4 рд░рд╛рдЙрдВрдб рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдореБрдЦреНрдп рдХреБрдВрдЬреА рд╕реЗ рдЙрддреНрдкрдиреНрди рдЫрд╣ 32-рдмрд┐рдЯ рдЙрдкрдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдХреБрдВрдЬреА рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ 2 64 рд╕реЗ 2 192 рддрдХ рдкреНрд░рддрд┐рд░реЛрдз рд╕реАрдорд╛ "рдмрдврд╝рддреА" рд╣реИ)ред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ, рдкреНрд▓реЗрдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рджреЛ рдмреНрд▓реЙрдХреЛрдВ, 32 рдмрд┐рдЯреНрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдХреНрд░рдорд╢рдГ 32-рдмрд┐рдЯ рдЙрдкрдХреБрдВрдЬ K [4] рдФрд░ K [5] рдХреЗ рд╕рд╛рде modulo рджреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдлрд┐рд░ рдмрд╛рдпрд╛рдВ рднрд╛рдЧ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддрд╛ рд╣реИ, рдФрд░ рджрд╛рдПрдВ рдмрд╛рдПрдВ рдЦрдВрдб рдХреЗ рд╕рд╛рде рдореЛрдбреБрд▓реЛ рджреЛ рдЬреЛрдбрд╝рдХрд░ рдмрдирддрд╛ рд╣реИред

рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ 4 рд░рд╛рдЙрдВрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд░рд╛рдЙрдВрдб K [i] рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд░рд╛рдЗрдЯ рдмреНрд▓реЙрдХ рдХреЛ рдореЛрдбреБрд▓реЛ рджреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдлрд╝рдВрдХреНрд╢рди F рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкрд╛рда рдХреЗ рдмрд╛рдПрдВ рднрд╛рдЧ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рдмрд╛рдж, рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдкрд░рд╕реНрдкрд░ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЕрдЧрд▓реЗ рджреМрд░ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

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



рд╕рд┐рдлрд░ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рд╕рдлреЗрдж рд╕реНрдерд╛рди рдлрд╝рдВрдХреНрд╢рди рдПрдл рд╣реИред рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ, рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


рдЗрдирдкреБрдЯ рдкрд░, рдлрд╝рдВрдХреНрд╢рди рдПрдл рдХреЛ 4 рдмрд╛рдЗрдЯреНрд╕ рдПрдХреНрд╕ 1 , рдПрдХреНрд╕ 2 , рдПрдХреНрд╕ 3 , рдПрдХреНрд╕ 4 рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ ред рдЕрдЧрд▓рд╛, рдЗрдирдкреБрдЯ рдмрд╛рдЗрдЯреНрд╕ рдорд┐рд╢реНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдЬреА 0 рдпрд╛ рдЬреА 1 рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред рдлрд╝рдВрдХреНрд╢рди рдПрдХреНрд╕ рдХреА рдЧрдгрдирд╛ рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд 4 рдмрд╛рдЗрдЯреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдПрдл рдХрд╛ 32-рдмрд┐рдЯ рдЖрдЙрдЯрдкреБрдЯ рдЕрдиреБрдХреНрд░рдо рдмрдирд╛рддреЗ рд╣реИрдВред

рдлрд╝рдВрдХреНрд╢рди рдЬреА 0 рдФрд░ рдЬреА 1 16-рдмрд┐рдЯ рдЗрдирдкреБрдЯ рдЕрдиреБрдХреНрд░рдо рдХреЛ 8-рдмрд┐рдЯ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдлрд╝рдВрдХреНрд╢рди рдЬреА 0 рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЬрд╣рд╛рдБ << рдмрд╛рдИрдВ рдУрд░ рдЪрдХреНрд░реАрдп рдмрджрд▓рд╛рд╡ рд╣реИред
рдЬрдмрдХрд┐ рдлрд╝рдВрдХреНрд╢рди G 1 рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ: ред

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

FEAL4 рдХрд╛ C # рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
class FEAL4 { private byte G0(byte a, byte b) { return (byte)((((a + b) % 256) << 2) | (((a + b) % 256) >> 6)); } private byte G1(byte a, byte b) { return (byte)((((a + b+1) % 256) << 2) | (((a + b+1) % 256) >> 6)); } public byte[] F(byte[] x) { byte[] y = new byte[4]; y[1] = G1((byte)(x[0] ^ x[1]), (byte)(x[2] ^ x[3])); y[0] = G0(x[0], y[1]); y[2] = G0(y[1], (byte)(x[2] ^ x[3])); y[3] = G1(y[2], x[3]); return y; } private void AddKeyPart(byte[] P, byte[] K) { for (int i = 0; i < 4; i++) { P[i] = (byte)(P[i] ^ K[i]); } } private byte[] XOR(byte[] a, byte[] b) { byte[] c=new byte[a.Length]; for (int i = 0; i < c.Length; i++) { c[i] = (byte)(a[i] ^ b[i]); } return c; } public byte[] Encrypt(byte[] P, byte[][] K) { byte[] LeftPart = new byte[4]; byte[] RightPart = new byte[4]; Array.Copy(P, 0, LeftPart, 0, 4); Array.Copy(P, 4, RightPart, 0, 4); AddKeyPart(LeftPart, K[4]); AddKeyPart(RightPart, K[5]); byte[] Round2Left = XOR(LeftPart, RightPart); byte[] Round2Right = XOR(LeftPart, F(XOR(Round2Left, K[0]))); byte[] Round3Left = Round2Right; byte[] Round3Right = XOR(Round2Left,F(XOR(Round2Right,K[1]))); byte[] Round4Left = Round3Right; byte[] Round4Right = XOR(Round3Left, F(XOR(Round3Right, K[2]))); byte[] CipherTextLeft = XOR(Round4Left,F(XOR(Round4Right,K[3]))); byte[] CipherTextRight = XOR(Round4Right, CipherTextLeft); byte[] CipherText = new byte[8]; Array.Copy(CipherTextLeft, 0, CipherText, 0, 4); Array.Copy(CipherTextRight, 0, CipherText, 4, 4); return CipherText; } public byte[] Decrypt(byte[] P, byte[][] K) { byte[] LeftPart = new byte[4]; byte[] RightPart = new byte[4]; Array.Copy(P, 0, LeftPart, 0, 4); Array.Copy(P, 4, RightPart, 0, 4); byte[] Round4Right = XOR(LeftPart, RightPart); byte[] Round4Left = XOR(LeftPart, F(XOR(Round4Right, K[3]))); byte[] Round3Right = Round4Left; byte[] Round3Left = XOR(Round4Right, F(XOR(Round3Right, K[2]))); byte[] Round2Right = Round3Left; byte[] Round2Left = XOR(Round3Right, F(XOR(Round2Right, K[1]))); byte[] Round1Right = Round2Left; byte[] Round1Left = XOR(Round2Right, F(XOR(Round1Right, K[0]))); byte[] TextLeft = Round1Left; byte[] TextRight = XOR(Round1Left,Round1Right); AddKeyPart(TextLeft, K[4]); AddKeyPart(TextRight, K[5]); byte[] Text = new byte[8]; Array.Copy(TextLeft, 0, Text, 0, 4); Array.Copy(TextRight, 0, Text, 4, 4); return Text; } } 



FEAL4 рд╕рд┐рдлрд░ рдХреЗ рд╡рд┐рднреЗрджрдХ рдХреНрд░рд┐рдкреНрдЯреЛрдирд╛рд▓рд┐рд╕рд┐рд╕


рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕рдорд╛рд░реЛрд╣ рдПрдл рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рд╕рд┐рдлрд░ рдХреЗ рдХреНрд░рд┐рдкреНрдЯреЛрдирд╛рд▓рд┐рд╕рд┐рд╕ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдкреВрд░реЗ FEAL рд╕рд┐рдлрд░ рдХрд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЛрд╖ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдПрдл рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдПрдХ рд╡рд┐рдкрддреНрддрд┐рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐ рд╣реИред X 1 рдФрд░ X 2 рдХреЗ рдХрд┐рд╕реА рднреА рджреЛ рдорд╛рди, рдЬреИрд╕реЗ рдХрд┐ рдЙрдирдХрд╛ рдЕрдВрддрд░ X 1 = X 2 = 0x80800000, Y 1 рдФрд░ Y 2 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, 100% рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдВрддрд░ Y 1 2 Y 2 = 0x02000000ред

рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдПрдл рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЕрдВрддрд░ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

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

рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рд╕рд┐рдлрд░ рдХреЛ рдХреНрд░рд┐рдкреНрдЯреЛрдХрд░реЗрдВрд╕реА рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрдордЬреЛрд░ рдмрдирд╛ рджреЗрддреА рд╣реИред рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдВрддрд░ рдХреА 100% рд╕рдВрднрд╛рд╡рдирд╛ %Y рдПрдХ рд╣рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЦреБрд▓реЗ-рдмрдВрдж рдкрд╛рда рдЬреЛрдбрд╝реЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЕрдВрддрд┐рдо рджреМрд░ K [3] рдХреА рдХреБрдВрдЬреА рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдХреМрди рд╕реЗ рдХрджрдо рдЙрдард╛рдиреЗ рдЪрд╛рд╣рд┐рдПред
рд╣рдорд▓рд╛рд╡рд░ рдХрдИ рдкреНрд▓реЗрдирдЯреЗрдХреНрд╕реНрдЯ рдЬреЛрдбрд╝реЗ рдкреА 1 рдФрд░ рдкреА 2 рдмрдирд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ 0P = 0x8080000080800000ред рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдПрдл рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рд╣рдорд▓рд╛рд╡рд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рдЧрднрдЧ рд╣рд░ рджреМрд░ рдкрд░ рдЕрдВрддрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред

рдЖрдк рдирд┐рдореНрди рдЪрд┐рддреНрд░ рдореЗрдВ рдЕрдВрддрд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

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

рд╕реА 1 рдФрд░ рд╕реА 2 рдХреА рдПрдХ рдЬреЛрдбрд╝реА рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг , рд╣рдорд▓рд╛рд╡рд░ thus рд╕реА рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдорд╛рди рдПрд▓ 'рдФрд░ рдЖрд░' рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╡рд╣ Z '= L'202 рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рджреВрд╕рд░реА рдУрд░, рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕ рд╕реА 1 рдФрд░ рд╕реА 2 рдХреА рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рд╡рд╛рдИ 1 рдФрд░ рд╡рд╛рдИ 2 рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
Y 1 рдФрд░ Y 2 рдХреЛ рдЬрд╛рдирдХрд░ , рд╣рдорд▓рд╛рд╡рд░ рдХреБрдВрдЬреА K [3] рдХреА рдЧрдгрдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдХреБрдВрдЬреА рдХреЗрдкреЛрд╕ рдХреЗ рд▓рд┐рдП, Z 1 = F (Y 1 andKpos) рдФрд░ Z 2 = F (Y 2 calculatedKpos) рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдЬреЗрдб 1 ul рдЬреЗрдб 2 рдХреЗ рдореЛрдбреБрд▓реЛ рджреЛ рдорд╛рдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП , рд╣рдорд▓рд╛рд╡рд░ рдкрд╣рд▓реЗ рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЧрдИ рдЬреЗрдб рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдореА рдореВрд▓реНрдп рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ Z '= Z 1 2Z 2 , рддреЛ Kpos рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╡рд╛рдВрдЫрд┐рдд рдЙрдкрдХреБрдВрдЬреА K [3] рд╣реИред
рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рдкреНрдд рдХреАрдк рдХреБрдВрдЬреА рдХреЛ рдХрдИ рдЬреЛрдбрд╝реЗ рд╕рд┐рдлрд░рдЯреЗрдХреН рдЯ рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП (рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ 10 рдЬреЛрдбрд╝реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛)ред

рдпрд╣ рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣рдорд▓реЗ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ 2 32 рд╕рдВрдЧрдгрдирд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдл рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд┐рдлрд░ рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ 2 64 рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдВрдХрдбрд╝рд╛ рдЕрднреА рднреА рдмрд╣реБрдд рд╕реБрдЦрдж рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рд╣рдо рд╕рднреА 4 рдЧреЛрд▓ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдорд▓реЗ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЧрдгрдирд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛рдлреА рдХрдо рд╣реЛ рдЧрдИ рд╣реИ 2 17 ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реИрдВ , рдЬрд╣рд╛рдБ рдПрдХ рдмрд╛рдЗрдЯ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдФрд░ z рдПрдХ рд╢реВрдиреНрдп рдмрд╛рдЗрдЯ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ A = (z, a, a, z) рдХреЗ рд▓рд┐рдП, рд╣рдорд▓рд╛рд╡рд░ Q 0 = F (M (Y 0 ) Y A) рдФрд░ Q 1 = F (M (Y 1 )) A) рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдпрджрд┐ A = M (K [3]), рддреЛ рдорд╛рди Q 0 ide Q 1 рдХрд╛ рджреВрд╕рд░рд╛ рдФрд░ рддреАрд╕рд░рд╛ рдмрд╛рдЗрдЯ рдорд╛рди Z рдХреЗ рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдХреБрдВрдЬреА Kpos рдХреЗ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИред
рдЙрд╕рдХреЗ рдмрд╛рдж, b 0 рдФрд░ b 1 рдХреЗ рд╕рднреА рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдорд▓рд╛рд╡рд░ рдЕрдиреБрдХреНрд░рдо Kpos = (b 0 , b 0 1a 0 , b 1 ,a 1 , b 1 ) рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдЕрдиреБрдХреНрд░рдо рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИред

рдЙрдкрдХреБрдВрдЬреА K [3] рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдорд▓рд╛рд╡рд░ рдЙрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рд┐рдлрд░ рддреАрд╕рд░реЗ рджреМрд░ рдХреЗ рдмрд╛рдж рдерд╛ рдФрд░ рдЗрд╕рд╕реЗ рдЙрд╕реЗ рдЙрдкрдХреБрдВрдЬреА K [2] рдкрд░ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рд╣рдорд▓рд╛ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреБрдВрдЬреА K [2] рдкрд░ рд╣рдорд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдВрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рджреВрд╕рд░реЗ рд░рд╛рдЙрдВрдб рдореЗрдВ рдЕрдВрддрд░ 000P = 0x8080000080800000 рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП Z '= 0x02000000 рдорд╛рди рддрдХ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рджреВрд╕рд░реЗ рджреМрд░ рдХреА рдХреБрдВрдЬреА рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред
рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднреЗрджрдХреЛрдВ рдХреЛ рдЕрдВрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рд░рд╛рдЙрдВрдб 4: 0x8080000080800000
рд░рд╛рдЙрдВрдб 3: 0x0000000080800000
рд░рд╛рдЙрдВрдб 2: 0x0000000002000000
рд░рд╛рдЙрдВрдб 1: 0x0200000080000000
рдкреНрд░рддреНрдпреЗрдХ рджреМрд░ рдХреА рд╕рднреА рдЪрд╛рд░ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдХреБрдВрдЬреА K [5] рдФрд░ K [4] рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ 4 рд░рд╛рдЙрдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреНрд░рд╛рдЗрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдореВрд▓реНрдп modulte рджреЛ рдХреЛ рдЬреНрдЮрд╛рдд рдкреНрд▓реЗрдирдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝реЗрдВред

рдпрджрд┐ рдЖрдк рд╣рдорд▓реЗ рдХреЗ рд╕реНрд░реЛрдд рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдпрд╣рд╛рдВ рдЖ рд╕рдХрддреЗ рд╣реИрдВ ред

рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ


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


All Articles