рдЬреЗрдПрд╕ рдкрд░ рддреАрд╕-рд╕рдкреНрддрд╛рд╣ рдХрд╛ рд╕рдкреНрддрд╛рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд╕рд╛рдорд╛рдиреНрдп рдХреБрдЫ рдХреЗ рд╕рд╛рде рдкрддрд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрдврд╝реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦреЛрдВ рдХреА
рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдпрд╛
рдпрд╣ рдкреБрд╕реНрддрдХ; рднрд╛рд╖рд╛ рд╢рдмреНрджрдХреЛрд╢
рдпрд╣рд╛рдБ ; рдлрд┐рд░ рднреА, рдореИрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ (рд╕рднреА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдмрд┐рдЧрд╛рдбрд╝рдиреЗ рдХреЗ рддрд╣рдд рдЫрд┐рдкреЗ рд╣реБрдП рд╣реИрдВ рддрд╛рдХрд┐ рд▓реЗрдЦ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рди рдХрд░реЗрдВ)ред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдб рдХреЗ рдкреНрд░рд╢реНрди, рд╕реБрдЭрд╛рд╡ рдпрд╛ рд╕реБрдзрд╛рд░ рд╣реИрдВ - рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдбреЗрд╕ рдХреНрдпрд╛ рд╣реИ?
DES (рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╕реНрдЯреИрдВрдбрд░реНрдб) рдЖрдИрдмреАрдПрдо рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдФрд░ 1977 рдореЗрдВ рдЕрдореЗрд░рд┐рдХреА рд╕рд░рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдорд╛рдирдХ (FIPS 46-3) рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрдореЛрджрд┐рдд рдПрдХ рд╕рдордорд┐рдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╣реИред
рдбреЗрд╕ 56-рдмрд┐рдЯ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмреНрд▓реЙрдХ рд╕рд┐рдлрд░ рд╣реИред рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ 64-рдмрд┐рдЯ рдмреНрд▓реЙрдХ рдХреЗ рдмрд┐рдЯрдХреЙрдЗрди рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд░рдорд╛рдВрдХрди, рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд╕реЛрд▓рд╣ рдЪрдХреНрд░ рдФрд░ рдЕрдВрдд рдореЗрдВ, рдмрд┐рдЯреНрд╕ рдХреЗ рд░рд┐рд╡рд░реНрд╕ рдХреНрд░рдордЪрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдЬрдореАрди рддреИрдпрд╛рд░ рдХрд░рдирд╛
рдбреЗрд╕ рдХрдИ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкреА
рдкреИрдЯрд░реНрди рдирдЧреНрди рдЖрдВрдЦреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ: рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рддрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдКрдкрд░реА рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рджрд╛рдПрдВ рд╕реЗ рдмрд╛рдПрдВ 1 рд╕реЗ 63 рддрдХ рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛рдПрдВ рд╣реИрдВ, рдФрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдирд┐рдЪрд▓реЗ рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдКрдкрд░реА рдХреЗ рд╕рдВрдЧрдд рддрддреНрд╡ рд╕реЗ рдПрдХ рдХрдо рд╣реИред рдЗрд╕рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВред
рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╢реАрд░реНрд╖ рдмрдирд╛рдУред
|: |. 8 4 $ >: +: i.32 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7
рдХреЛрдб рджрд╛рдИрдВ рд╕реЗ рдмрд╛рдИрдВ рдУрд░ рдЪрд▓рддрд╛ рд╣реИред рдХреНрд░рдо рдореЗрдВ:
i.32
рд╢реВрдиреНрдп рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ 32 рд▓рдЧрд╛рддрд╛рд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ;+:
рдЗрд╕рдХреЗ рдСрдкрд░реЗрдВрдб рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░рддрд╛ рд╣реИ;>:
рдПрдХ рд╕реЗ рдСрдкрд░реЗрдВрдб рдмрдврд╝рд╛рддрд╛ рд╣реИ;8 4 $
рдСрдкрд░реЗрдВрдб рдХреЛ 8x4 рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ;|.
рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдореБрдЦреНрдп рдЕрдХреНрд╖ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИ;|:
рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдХреНрд░рдорд┐рдХ i.32 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 +: i.32 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 >: +: i.32 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 8 4 $ >: +: i.32 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 |. 8 4 $ >: +: i.32 57 59 61 63 49 51 53 55 41 43 45 47 33 35 37 39 25 27 29 31 17 19 21 23 9 11 13 15 1 3 5 7 |: |. 8 4 $ >: +: i.32 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7
рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдирд┐рдЪрд▓реЗ рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рднреА рдЦрд░реНрдЪ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ:
<: |: |. 8 4 $ >: +: i.32 56 48 40 32 24 16 8 0 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6
<:
рдСрдкрд░реЗрдЯрд░ рдСрдкрд░реЗрдЯрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдПрдХ рд╕реЗ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред
рдЗрд╕реЗ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИ - рдпрд╣рд╛рдБ J рдХрд╛ рдЬрд╛рджреВ рдЪрд▓рди рдореЗрдВ рд╣реИ:
(] , <:) |: |. 8 4 $ >: +: i.32 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 56 48 40 32 24 16 8 0 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6
рддреАрди-рдХреНрд░рд┐рдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдХрд╛рдВрдЯрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
(fgh) y <-> (fy) g (hy)
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдКрдкрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЗрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ:
(] |: |. 8 4 $ >: +: i.32) , (<: |: |. 8 4 $ >: +: i.32)
рдбрд╛рдИрдПрдб рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдШрдЯрди рдХрд░рддрд╛ рд╣реИ, рдФрд░
]
рдмрд╕ рдЕрдкрдирд╛ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред
рдореЛрдирд╛рдб рд╡реЗрд░рд┐рдПрдВрдЯ
,
"рд╕реАрдзрд╛" рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ, рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдиреБрдорддрд┐ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╕реВрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
P =: , (] , <:) |: |. 8 4 $ >: +: i.32
рдЙрд▓рдЯрд╛ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкреА -1
рдпрд╣ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкреА рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ: рдкреА
-1 рдХрд╛ 0 рддрддреНрд╡ 39 рд╣реИ, рдкреА рдХрд╛ 39 рд╡рд╛рдВ рддрддреНрд╡ 0 рд╣реИ, рдЖрджрд┐ред
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдореИрдЯреНрд░рд┐рдХреНрд╕ P
-1 рдХреЗ рддрддреНрд╡ рдореИрдЯреНрд░рд┐рдХреНрд╕ P рдореЗрдВ рдЙрдирдХреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╕реВрдЪрдХ рд╣реИрдВред рдпрд╣ рднреНрд░рд╛рдордХ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕реВрддреНрд░ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрдкрд╣рд▓рд╛ рдЪрд░рдг рдбрд╛рдИрдб рдХрд╛рдВрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ:
x (fgh) y <-> (xfy) g (xhy)
(i.64) ([ * =/~) P
рдкрд░рд┐рдгрд╛рдо 64x64 рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ P [i] рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдкрдирд╛ рдирдВрдмрд░ (рдХрд╣рддреЗ рд╣реИрдВ, i) рд╣реИ, рдФрд░ рд╢реЗрд╖ рддрддреНрд╡ рд╢реВрдиреНрдп рд╕реЗ рднрд░реЗ рд╣реБрдП рд╣реИрдВред
рдХрд╛рдВрдЯрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрд░рд┐рдпрд╛рд╡рд┐рд╢реЗрд╖рдг
/
рдФрд░
~
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкрд╣рд▓рд╛ рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдкрд░ рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдСрдкрд░реЗрдВрдб рдХреЛ рд╕реНрд╡реИрдк рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП
xf~ y <-> yfx
рдпрджрд┐ рд╣рдо
u/ y
рд▓рд┐рдЦрддреЗ
u/ y
, рдЬрд╣рд╛рдБ
u
рдПрдХ рдбрд╛рдпрдбрд┐рдХ рдХреНрд░рд┐рдпрд╛ рд╣реИ, J рдЗрд╕реЗ y рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рдмреАрдЪ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛:
+/ 1 2 3 <-> 1 + 2 + 3
рдпрд╛ рдЗрд╕рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдФрд░ рдЕрдВрддрд┐рдо рд╕реВрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
iP =: +/ (i.64) ([ * =/~) P
рдХреБрдВрдЬреА рдЬреА рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд░рдордЪрдп рдХрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕
7 рд╡реЗрдВ, 15 рд╡реЗрдВ рдФрд░ рдЗрддрдиреЗ рдкрд░ рдмрд┐рдЯреНрд╕ рдХреЛ рдХреБрдВрдЬреА рдХреЗ "рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджрд┐рдпрд╛" рдЬрд╛рддрд╛ рд╣реИ - рд╡реЗ рд╕рдорддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдХрд░рддреЗ рд╣реИрдВред
рдЬреА рдореЗрдВ рдкреИрдЯрд░реНрди рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓рдЧрд╛рддрд╛рд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ 8x8 рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЬреА рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЕрдВрддрд┐рдо рдХреЙрд▓рдо рдмрд╕ рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг }: |: i. 8 8 0 8 16 24 32 40 48 56 1 9 17 25 33 41 49 57 2 10 18 26 34 42 50 58 3 11 19 27 35 43 51 59 4 12 20 28 36 44 52 60 5 13 21 29 37 45 53 61 6 14 22 30 38 46 54 62
i. 8 8
рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рдмрдЬрд╛рдп i. 8 8
рддреБрд░рдВрдд рд▓рдЧрд╛рддрд╛рд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ 8x8 рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рддрд╛ рд╣реИред}:
рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рд░рдгреА / рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрддрд┐рдо рддрддреНрд╡ рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИред
рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝рд┐рдВрдЧ рдПрдХ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рд░реВрдк рдореЗрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЕрдм рдЖрдкрдХреЛ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрджрд┐ рдЖрдк рд╕рд┐рд░реНрдл рдкрд░рд┐рдгрд╛рдо рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ
|.
, рддреЛ рдкреВрд░реА рдкрдВрдХреНрддрд┐ рдмрджрд▓реА рдЬрд╛рдПрдЧреАред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдХреНрд░рд┐рдпрд╛ рдХреА рд░реИрдВрдХ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реЗрдЦрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗ:
|."1 }: |: i. 8 8 56 48 40 32 24 16 8 0 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 28 20 12 4 61 53 45 37 29 21 13 5 62 54 46 38 30 22 14 6
"
рдХреНрд░рд┐рдпрд╛ рдХреА рд░реИрдВрдХ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред 0 рдХреЗ рдПрдХ рд░реИрдВрдХ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдСрдкрд░реЗрдВрдб рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡, 1 рд╕реЗ рдкрдВрдХреНрддрд┐ рдФрд░ 2 рд╕реЗ рдкреВрд░реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЪрд░
G
рд╕рд╣реЗрдЬреЗрдВ - рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред
рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдкрд╣рд▓реЗ 28 рддрддреНрд╡ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╣реИрдВ рдЬреИрд╕реЗ рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИ, рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдПрдХ рдФрд░ 24 рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рд╢реЗрд╖ рдЪрд╛рд░ рддрддреНрд╡реЛрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ, рдЗрд╕рд▓рд┐рдП рдЬреИрд╕реЗ рд╣реИрдВ рд╡реИрд╕реЗ рд╣реА рдЙрдиреНрд╣реЗрдВ рджрд░реНрдЬ рдХрд░реЗрдВ:
4 14 $ (28 {. , G), (24 {. , |. G), (27 19 11 3) 56 48 40 32 24 16 8 0 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 60 52 44 36 28 20 12 4 27 19 11 3
N {. y
N {. y
рдкрд╣рд▓реЗ
N
рддрддреНрд╡реЛрдВ рдХреЛ
y
рд╕реЗ рдЦреАрдВрдЪрддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо рд╕рд╣реЗрдЬреЗрдВред
G =: |."1 }: |: i. 8 8 G =: (28 {. , G), (24 {. , |. G), (27 19 11 3)
рдХреЗрдкреА рдХреБрдВрдЬреА рдХреНрд░рдордЪрдп рдореИрдЯреНрд░рд┐рдХреНрд╕
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдЙрджрд╛рд╕ рд╣реИ - рдкреИрдЯрд░реНрди рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдореИрдЯреНрд░рд┐рдХреНрд╕ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реИред
рдПрд╕ рдкрд╛рд░реА рдореИрдЯреНрд░рд┐рдХреНрд╕
рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИ, рджреВрд╕рд░рд╛ рдорд╛рди рд╣реИред рдореИрдВ рдпрд╣рд╛рдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рд░рд╣реВрдВрдЧрд╛ред
s =:1, (14 $ 1, 6 $ 2), 1
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдИ
рдпрд╣ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЖрд╕рд╛рдиреА рд╕реЗ
i. 8 4
рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
i. 8 4
i. 8 4
: рдмрд╛рдПрдВ рд╕реНрддрдВрдн рдХреЛ рдЪрдХреНрд░реАрдп рд░реВрдк рд╕реЗ рдиреАрдЪреЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рджрд╛рдИрдВ рдУрд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рджрд╛рдпрд╛рдВ рд╕реНрддрдВрдн рдКрдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд рд╣реИред
E =: |: i. 8 4 E =: , |: (_1 |. _1 { E) , E , (1 |. 0 { E)
рд╕рдВрдЪрд╛рд▓рдХ
x |. y
x |. y
рд╕рд░рдгреА рдХрд╛ рдПрдХ рдЧреЛрд▓рд╛рдХрд╛рд░ рдмрджрд▓рд╛рд╡ рдХрд░рддрд╛ рд╣реИред
P2 рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ (рд╣рд╛рдБ, DES рдореЗрдВ рдХрдИ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ)
рдпрд╣рд╛рдБ, рдХреЛрдИ рднреА рдкреИрдЯрд░реНрди рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИред рдФрд░ рдЖрдЧреЗ рдЪрд▓рддреЗ рд╣реИрдВред
рдПрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕
рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рддреНрд░рд┐-рдЖрдпрд╛рдореА рд╣реИ, рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХреЛрдИ рдирд┐рдпрдорд┐рддрддрд╛ рдЗрд╕рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреА рд╣реИред
рд╣рдо рдЗрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдиреАрдЪреЗ рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реИ, рдФрд░ рд╕рд╛рде рд╣реА рд╣рдо рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПред
f =: dyad : '|. #: S {~ < x, ((5{y)++:0{y), (+/(2^i.4)*}:}.y)' " 0 1 fS =: monad : '}. |."1 (4 $ 1), (i.8) f 8 6 $, y' " 2
рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрджреВрд╕рд░реА рдХреНрд░рд┐рдпрд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ 2 рдХреЗ рд░реИрдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдирдХ рд╣реИ, рдЬреЛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ 8x6 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рд╣реА рдСрдкрд░реЗрдВрдб рдХреЗ рд╕рд╛рде рдкрд╣рд▓реА рдХреНрд░рд┐рдпрд╛ рддрдХ рдЦрд┐рд▓рд╛рддрд╛ рд╣реИред рдмрд╛рдпрд╛рдБ рдСрдкрд░реЗрдВрдб i.8
ред рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдЪрд╛рд░ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ, рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреА рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЙрд▓рдЯрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд╣рд▓реА рдХреНрд░рд┐рдпрд╛ 0 1 рдХреА рд░реИрдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд░рдВрдЬрдХ рд╣реИ (рдЬреИрд╕реЗ рд░рдВрдЬрдХ рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд░реИрдВрдХ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд░реИрдВрдХ 0 рдХреЛ рдмрд╛рдПрдВ рдСрдкрд░реЗрдВрдб рдФрд░ 1 рд╕реЗ рджрд╛рдПрдВ рдСрдкрд░реЗрдВрдб рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдпрд╣ рдХреНрд░рд┐рдпрд╛ рдорд╛рдирддреА рд╣реИ рдХрд┐ рджрд╛рд╣рд┐рдирд╛ рдСрдкрд░реЗрдВрдб рд▓рдВрдмрд╛рдИ рдХреЗ рдмрд┐рдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИред 0 рдФрд░ 5 рд╡реАрдВ рдмрд┐рдЯреНрд╕ рдПрд╕ рдореЗрдВ рд▓рд╛рдЗрди рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдмрд┐рдЯреНрд╕ 1 4 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрд▓рдо рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдмрд╛рдПрдВ рдСрдкрд░реЗрдВрдб рд╕рдмрдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рднреА рддреАрди рдкреНрд░рд╛рдкреНрдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдПрдХ рдмреЙрдХреНрд╕ (рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдПрдирд╛рд▓реЙрдЧ) рдореЗрдВ crammed рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрдирдкреБрдЯ рдСрдкрд░реЗрдЯрд░ {
- рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рд░рдгреА рд╕реЗ рд▓реЗрддреЗ рд╣реБрдП рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдСрдкрд░реЗрдЯрд░ #:
рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрдЧрд▓реЗ рдЪрд░рдг рджреНрд╡рд╛рд░рд╛ рдЙрд▓рдЯрд╛ рд╣реЛрддрд╛ рд╣реИред
рд╡реНрдпреБрддреНрдХреНрд░рдо рдФрд░ рдЪрд╛рд░ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдЗрд╕ рдорд╣рд╛рдХрд╛рд╡реНрдп рдХреЛ рдкрд░рд┐рдгрд╛рдо рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЕрдЧреНрд░рдгреА рд╢реВрдиреНрдп рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ: рдпрджрд┐ рд╡реЗ рд╢реБрд░реВ рдореЗрдВ рдЙрд▓реНрдЯреЗ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЕрдВрдд рдореЗрдВ рд╢реВрдиреНрдп рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдЪрд▓реЛ рд╡реНрдпрд╛рдкрд╛рд░ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░реЛ
рдкрд╣рд▓реЗ рд╣рдо рдЙрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ (рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐
key
рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ):
рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдореЛрдирдб рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгреЛрдВ рдХреЛ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ (рд▓реЗрдЦ рдореЗрдВ рдХреЛрдИ рдХреЛрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛) рдФрд░ рдХреБрдВрдЬреА рдЬреА рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд░рдордЪрдп рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдкрд░рд┐рдгрд╛рдо рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
binkey =. chr2bin key prmkey =. G { binkey
рдлрд┐рд░ рд╣рдо рдкрд░рд┐рдгрд╛рдо рдХреЗ рдкрд╣рд▓реЗ 28 рдмрд┐рдЯреНрд╕ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рддреЗ рд╣реИрдВ:
C =. (28 {. prmkey) |.~"1 0 +/\s
рдЗрд╕ рд▓рд╛рдЗрди рдкрд░ рдирдП рдореЗрдВ рд╕реЗ, рдХреЗрд╡рд▓ рдХреНрд░рд┐рдпрд╛ рд╡рд┐рд╢реЗрд╖рдг: рдпрд╣ рдХреНрд░рд┐рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрд╕рд░реНрдЧ рдЙрдкрд╕рд░реНрдЧ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред
s 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 +/\s 1 2 4 6 8 10 12 14 15 17 19 21 23 25 27 28
рд╣рдо рдкрд┐рдЫрд▓реЗ 28 рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рдХрд░реЗрдВрдЧреЗ:
D =. (28 }. prmkey) |.~"1 0 +/\s
N }. y
N }. y
рдХреЗ рдкрд╣рд▓реЗ
N
рддрддреНрд╡реЛрдВ рдХреЛ
y
ред
рдЕрдм рд╣рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ KP рдХреБрдВрдЬреА рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
K =. KP {"1 C ," 1 1 D
binkey =. chr2bin key prmkey =. G { binkey C =. (28 {. prmkey) |.~"1 0 +/\s D =. (28 }. prmkey) |.~"1 0 +/\s K =. KP {"1 C ," 1 1 D
рдореВрд▓ 8-рдмрд╛рдЗрдЯ рдкрд╛рда рдХреЛ рджреЛ 32-рдмрд┐рдЯ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
bin =. chr2bin plain prm =. P { bin L =. 32 {. prm R =. 32 }. prm
рдЕрдм рд╣рдореЗрдВ рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреА рдЬреЛрдбрд╝реА L, R рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдореЛрдирд╛рдб рдмрдирд╛рдПрдВ рдЬреЛ рддреАрди рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмреЙрдХреНрд╕ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рдорд╛рди рдмреЙрдХреНрд╕ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг>
"рд╕рд╛рдордЧреНрд░реА рдЦреЛрд▓рддрд╛ рд╣реИ" рдмреЙрдХреНрд╕ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИред
K =. > 0 { y L =. > 1 { y R =. > 2 { y
рдЙрдкрд░реЛрдХреНрдд рдЫрд╡рд┐ рдореЗрдВ f рдлрд╝рдВрдХреНрд╢рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рддрд╛ рд╣реИ:
- рд╡рд┐рд╕реНрддрд╛рд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ E рд╕реЗ R рддрдХ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ;
- рдХреБрдВрдЬреА рдореЙрдбреНрдпреВрд▓ 2 рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдо рдЬреЛрдбрд╝рддрд╛ рд╣реИ;
- рдкрд░рд┐рдгрд╛рдо рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЫрд╣-рдмрд┐рдЯ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрд╕ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд╛рд░-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рдорд┐рд▓рддреА рд╣реИ;
- рдЗрд╕ рдкрд░ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ P2 рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ;
- рдПрд▓ рдореЛрдбреБрд▓реЛ 2 рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдо рдЬреЛрдбрд╝рддрд╛ рд╣реИ;
рдХрд┐рддрдирд╛ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИ рдХрд┐ рдЕрдиреБрдЪреНрдЫреЗрдж 3 рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреНрд░рд┐рдпрд╛ рд╣реИ! рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдПрдХ рд╕рд░рд▓ рд░реЗрдЦрд╛ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ:
L ~: P2 { , fS (0 { K) ~: E { R
step =: monad define K =. > 0 { y L =. > 1 { y R =. > 2 { y (}. K); R ; L ~: P2 { , fS (0 { K) ~: E { R )
рдФрд░ рд╣рдо рдЗрд╕реЗ рдХрдИ рдмрд╛рд░ рдХрд╣реЗрдВрдЧреЗ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрд╛рдмреА рд╣реЛрдЧреА:
result =. step^:(#K) K; L; R
рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрдЗрд╕ рд▓рд╛рдЗрди рдореЗрдВ рдирдП рдореЗрдВ рд╕реЗ, рдХреЗрд╡рд▓ рдпреВрдирд┐рдпрди u^:N
, рдЬреЛ рдХреНрд░рд┐рдпрд╛ рдпреВ рдПрди рдмрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
u^:4 y <-> uuuuy
рдлрд┐рд░ рд╕реЗ, L рдФрд░ R рдХреЛ рд╕реНрд╡реИрдк рдХрд░реЗрдВ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
R =. > 1 { result L =. > 2 { result bin2chr iP { ,L,R
рдЖрдЗрдП рд╕рдм рдХреБрдЫ рдПрдХ рдбрд╛рдЗрдПрдб рдореЗрдВ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ рдЬреЛ рдмрд╛рдПрдВ рдСрдкрд░реЗрдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рдХреБрдВрдЬреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджрд╛рдПрдВ рдХреЗ рд╕рд╛рде 8-рдмрд╛рдЗрдЯ рд╕рд░рдгреА рд╣реИ:
рдпрд╣рд╛рдВ рд▓рдВрдмрд╛ рдбреЙрдЧ encode =: dyad define key =. x binkey =. chr2bin key prmkey =. G { binkey C =. (28 {. prmkey) |.~"1 0 +/\s D =. (28 }. prmkey) |.~"1 0 +/\s K =. KP {"1 C ," 1 1 D plain =. y bin =. chr2bin plain prm =. P { bin L =. 32 {. prm R =. 32 }. prm result =. step^:(#K) K; L; R R =. > 1 { result L =. > 2 { result bin2chr iP { ,L,R )
рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЪрд╛рдмрд┐рдпрд╛рдБ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬреЛ рднреА рд╣реИ рдЙрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдкрд╛рда рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
in.txt:
Lorem ipsum dolor sit amet consectetur adipiscing elit.
рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг1!:1
рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ
plaintext =: 1!:1 < 'in.txt'
рдЪреВрдВрдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкреНрд░рддреНрдпреЗрдХ 8 рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреВрдВрдЫ рдХреЛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рд╣рдереМрдбрд╝рд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдкрд╛рда рдмрд╕ рджреЛрд╣рд░рд╛рдПрдЧрд╛:
' ',~^:(8 - 8| # plaintext) plaintext
рдФрд░ рдЕрдм рд╣рдо рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ 8 рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдмреНрд▓реЙрдХ рдореЗрдВ рддреЛрдбрд╝ рджреЗрдВрдЧреЗред
plaintext =: (8,~ >. 8 %~ #plaintext) $, ' ',~^:(8 - 8| # plaintext) plaintext
plaintext =: 1!:1 < 'in.txt' plaintext =: (8,~ >. 8 %~ #plaintext) $, ' ',~^:(8 - 8| # plaintext) plaintext
рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗрдВред
рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг1!:21
рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддрд╛ рд╣реИ, 1!:22
- рдмрдВрдж рд╣реЛрддрд╛ рд╣реИ, рдФрд░ 1!:2
рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ
out =: 1!:21 < 'out.txt' ('habrhabr' encode"1 1 plaintext) 1!:2 out 1!:22 out
out.txt:
4acc c8ad 32dd 96a1 ae9c 2fdc 2025 e3d0 968c 97c0 5544 0944 2d20 2069 f943 f0d4 e98d bdea 71f9 c516 8a0a b034 5641 b0b5 53cc 2355 2fb1 4bde
рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред
cipher =: 1!:1 < 'out.txt' cipher =: (8,~ >. 8 %~ #cipher) $, cipher , 'habrhabr' decode"1 1 cipher Lorem ipsum dolor sit amet consectetur adipiscing elit.
рдХреЛрдб рд╕рднреА
peystbin рдкрд░ рд╣реИ ред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдб рдХреЗ рдкреНрд░рд╢реНрди, рд╕реБрдЭрд╛рд╡ рдпрд╛ рд╕реБрдзрд╛рд░ рд╣реИрдВ - рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж!