Π Π°ΡΡΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ
Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ΅ΡΠ΅ΠΉ.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ²
Π Π½Π°ΠΈΠ²Π½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ Π²Π΄Π²ΠΎΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ Π±Π»ΠΎΠΊΠ°. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π» Π±Ρ Ρ 32-Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ΄Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Π²ΠΌΠ΅ΡΡΠΎ 16-Π±ΠΈΡΠΎΠ²ΡΡ ΠΈ Ρ 256-Π±ΠΈΡΠΎΠ²ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ. Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡ Π±Ρ Π±ΡΡΡΡΠ΅Π΅, ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·ΡΠΎΡΠ»Π° Π±Ρ Π² 232 ΡΠ°Π·Π°. ΠΠ»ΠΈ Π½Π΅Ρ? Π’Π΅ΠΎΡΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΎΠΏΠΈΡΠ°Π΅ΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ 216 +1 ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ. Π 232 + 1 ΠΏΡΠΎΡΡΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π Π°ΡΡΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΠ΅ΠΉ. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΡΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ»
Π’Π΅ΠΌΠ°: «Π Π°ΡΡΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΠ΅ΠΉ. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ²»
1. ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ Π½Π° ΠΊΡΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠ΅ΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ
2.1 Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ (ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ)
2.2 Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠΈΡΡΠΈ ΠΈ Π₯Π΅Π»ΠΌΠ°Π½Π° (ΡΠ΅Π·Π΅ΡΠ²Π½Π°Ρ)
2.3 IDEA Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ ΠΏΠΎ Π²ΡΡ ΠΎΠ΄Ρ
2.3.1 ΠΠ±Π·ΠΎΡ IDEA
2.3.2 Π‘ΠΊΠΎΡΠΎΡΡΡ IDEA
2.3.4 ΠΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ· IDEA
2.3.5ΠΡΠ²ΠΎΠ΄Ρ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ
3. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
4. ΠΡΠΈΠΏΡΠΎΡΡΠΎΠΉΠΊΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 3
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 4
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 5
1. ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ Π½Π° ΠΊΡΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π·Π°ΡΠ΅ΠΊΡΠ΅ΡΠ΅Π½Π½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΡΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° IDEA Ρ OFB ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ΅Π°Π½ΡΠΎΠ²ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ — Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠΈΡΡΠΈ ΠΈ Π₯Π΅Π»ΠΌΠ°Π½Π°.
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ (Π²Π°ΡΠΈΠ°Π½Ρ № 16):
IDEA Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ ΠΏΠΎ Π²ΡΡ ΠΎΠ΄Ρ OFB (Output Feed Back):
Π§ΠΈΡΠ»ΠΎ Π²ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΠΉ — 5;
ΠΡΠΎΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π = 0xCE2AF780C0F289AE51EAC188FA20BCD3 (60);
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ -50 000;
2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠ΅ΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ
2.1 Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ (ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ)
1. Π¦Π Π Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΈ ΡΠ°ΡΡΡΠ»Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΈΡ ΠΎΡΠΊΡΡΡΡΠ΅ ΠΊΠ»ΡΡΠΈ:
Π i = (Π i 1, Π i 2,…, Π i L), Π³Π΄Π΅ i=1,2,…, V (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ);
ΠΠ΄ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π²Π΅ΠΊΡΠΎΡ, ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ. Π ΠΊΡΡΡΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
— Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 23);
— Π²Π΅ΠΊΡΠΎΡ Π°Π΄ΡΠ΅ΡΠΎΠ² ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π i = (ai, ai*2 ,…, ai*L),
Π³Π΄Π΅ i=1,2,…, V, Π° L — ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΠΉ;
— ΡΠ°Π·ΠΌΠ΅Ρ Π ij ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 16 Π±ΠΈΡ (ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 65 535), ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ (Π² Π·Π°Π΄Π°Π½ΠΈΠΈ 50 000).
2. Π¦Π Π Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ L*L ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ
Π’=(m*n),
Π³Π΄Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ tmn Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ ΡΠ°Π²Π½ΠΎΠ²Π΅ΡΠΎΡΡΠ½ΡΠΌΠΈ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ, ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ 128 Π±ΠΈΡ ΡΠ°Π²Π½ΡΡ Π΄Π»ΠΈΠ½Π΅ ΠΊΠ»ΡΡΠ°.
3. Π¦Π Π Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΈ ΡΠ°ΡΡΡΠ»Π°Π΅Ρ ΠΏΠΎ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ ΡΠ²ΡΠ·ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΅Π³ΠΎ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ:
Si = T*PiT;
4. Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ i ΠΈ j ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
— i ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΈΠ· Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΠ΅Π³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΎΡΠΊΡΡΡΡΠΉ Π°Π΄ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ j ΠΈ ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΠΏΠ°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° Si:
Πij = Si*PjT;
— j ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΈΠ· Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΠ΅Π³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΎΡΠΊΡΡΡΡΠΉ Π°Π΄ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ i ΠΈ ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΠΏΠ°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° Sj:
Πji = Sj*PiT;
Π Π²ΠΈΠ΄Ρ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΡΡ Π’ ΠΊΠ»ΡΡΠΈ Πij ΠΈ Kji Π±ΡΠ΄ΡΡ ΡΠ°Π²Π½ΡΠΌΠΈ. ΠΠ°Π»Π΅Π΅ ΠΊΠ»ΡΡ ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ Π² ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π±Π»ΠΎΠΊΠ° ΡΠΈΡΡΠ°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° IDEA.
2.2 Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠΈΡΡΠΈ ΠΈ Π₯Π΅Π»ΠΌΠ°Π½Π° (ΡΠ΅Π·Π΅ΡΠ²Π½Π°Ρ)
1. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠ΅ΡΠΈ Π·Π°ΡΠ°Π½Π΅Π΅ ΡΡΠ»Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ Π (Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΏΡΠΎΡΡΠΎΠΌ ΡΠΈΡΠ»Π΅ 128 Π±ΠΈΡ) ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ gZp (64 Π±ΠΈΡ).
2. ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ i ΠΈ j ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΎΠ½ΠΈ Π·Π°ΡΠ°Π½Π΅Π΅ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ X ΠΈ Y (128 Π±ΠΈΡ).
3. ΠΠ°Π»Π΅Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ i Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΠΎΡΠΊΡΡΡΡΠΉ ΠΊΠ»ΡΡ:
Πi = gX(mod P),
Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ j — ΠΎΡΠΊΡΡΡΡΠΉ ΠΊΠ»ΡΡ:
Πj = gY(mod P).
4. ΠΠ±ΠΌΠ΅Π½ΡΠ²ΡΠΈΡΡ ΠΎΡΠΊΡΡΡΡΠΌΠΈ ΠΊΠ»ΡΡΠ°ΠΌΠΈ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π²ΡΡΠΈΡΠ»ΡΡΡ ΠΎΠ±ΡΠΈΠΉ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ:
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ i: Πij = (gX)Y(mod P);
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ j: Πji = (gY)X(mod P);
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΊΠ»ΡΡΠΈ Πij ΠΈ Kji Π±ΡΠ΄ΡΡ ΡΠ°Π²Π½ΡΠΌΠΈ. ΠΠ°Π»Π΅Π΅ ΠΊΠ»ΡΡ ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ Π² ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π±Π»ΠΎΠΊΠ° ΡΠΈΡΡΠ°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° IDEA.
2.3 IDEA Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ ΠΏΠΎ Π²ΡΡ ΠΎΠ΄Ρ OFB
ΡΠ΅ΡΡ ΠΊΠ»ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠΈΡΡΠ° IDEA, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΠΡΡΠ΅Π΄ΠΆΠ° ΠΠ°ΠΉ (Xuejia Lai) ΠΈ ΠΠΆΠ΅ΠΉΠΌΡΠΎΠΌ ΠΠ°ΡΡΠΈ (James Massey), ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π² 1990 Π³ΠΎΠ΄Ρ. ΠΠ½ Π½Π°Π·ΡΠ²Π°Π»ΡΡ PES (Proposed Encryption Standard, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ). Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π³ΠΎΠ΄Ρ, ΠΏΠΎΡΠ»Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΠΈΡ Π°ΠΌΠΎΠΌ ΠΈ Π¨Π°ΠΌΠΈΡΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·Π°, Π°Π²ΡΠΎΡΡ ΡΡΠΈΠ»ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉ ΡΠΈΡΡ ΠΏΡΠΎΡΠΈΠ² ΡΠ°ΠΊΠΎΠ³ΠΎ Π²ΡΠΊΡΡΡΠΈΡ ΠΈ Π½Π°Π·Π²Π°Π»ΠΈ Π½ΠΎΠ²ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ IPES (Improved Proposed Encryption Standard, ΡΠ»ΡΡΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ). Π 1992 Π³ΠΎΠ΄Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ IPES Π±ΡΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° IDEA (International Data Encryption Algorithm, ΠΌΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ).
IDEA ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²ΠΏΠ΅ΡΠ°ΡΠ»ΡΡΡΠΈΡ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΈ, Ρ ΠΎΡΡ ΠΊΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ· Π΄ΠΎΠ±ΠΈΠ»ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΏΠ΅Ρ ΠΎΠ² Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½Π½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΠ°ΠΏΠΎΠ², Π°Π»Π³ΠΎΡΠΈΡΠΌ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠΈΠ»ΡΠ½ΡΠΌ. ΠΡΠ΄ΡΡΠ΅Π΅ IDEA ΠΏΠΎΠΊΠ° Π½Π΅ΡΡΠ½ΠΎ. ΠΠΎΠΏΡΡΠΎΠΊ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠΌ DES ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΠΎ Π½Π΅ Π±ΡΠ»ΠΎ, ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½ Π·Π°ΠΏΠ°ΡΠ΅Π½ΡΠΎΠ²Π°Π½ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π»ΡΠ΄ΠΈ ΠΏΠΎΠΊΠ° Π²ΡΠ΅ Π΅ΡΠ΅ ΠΆΠ΄ΡΡ, Π½Π°Π±Π»ΡΠ΄Π°Ρ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π² ΠΏΡΠ΅Π΄ΡΡΠΎΡΡΠΈΠ΅ Π³ΠΎΠ΄Ρ ΠΊΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·Π°. ΠΠ³ΠΎ ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΡΡΡ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ PGP.
2.3.1 ΠΠ±Π·ΠΎΡ IDEA
IDEA ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π»ΠΎΡΠ½ΡΠΌ ΡΠΈΡΡΠΎΠΌ, ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ 64-Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°. ΠΠ»ΠΈΠ½Π° ΠΊΠ»ΡΡΠ° — 128 Π±ΠΈΡΠΎΠ². ΠΠ»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΡΠΈΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ. ΠΠ°ΠΊ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π±Π»ΠΎΡΠ½ΡΠ΅ ΡΠΈΡΡΡ IDEA ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈ Π·Π°ΠΏΡΡΡΠ²Π°Π½ΠΈΠ΅, ΠΈ ΡΠ°ΡΡΠ΅ΡΠ½ΠΈΠ΅. Π€ΠΈΠ»ΠΎΡΠΎΡΠΈΡ, Π»Π΅ΠΆΠ°ΡΠ°Ρ Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ «ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈΠ· ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π°Π»Π³Π΅Π±ΡΠ°ΠΈΡΠ΅ΡΠΊΠΈΡ Π³ΡΡΠΏΠΏ» .
Π‘ΠΌΠ΅ΡΠΈΠ²Π°ΡΡΡΡ ΡΡΠΈ Π°Π»Π³Π΅Π±ΡΠ°ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π³ΡΡΠΏΠΏΡ, ΠΈ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»Π΅Π³ΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΊΠ°ΠΊ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎ, ΡΠ°ΠΊ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ:
— XOR
— Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ 216
— Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ 216 + 1. (ΠΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ S-Π±Π»ΠΎΠΊ IDEA.)
ΠΡΠ΅ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ 16-Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ΄Π±Π»ΠΎΠΊΠ°ΠΌΠΈ. ΠΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄Π°ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ Π½Π° 16-Π±ΠΈΡΠΎΠ²ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ .
Π ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ ΠΏΠΎ Π²ΡΡ ΠΎΠ΄Ρ (OFB).
ΠΡΠΎΡ ΡΠ΅ΠΆΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π±Π»ΠΎΠΊΠ° ΠΈ ΡΠ΄Π²ΠΈΠ³ΠΎΠ²ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ — Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π±Π»ΠΎΠΊ Π²Π½Π°ΡΠ°Π»Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Π΅ΠΊΡΠΎΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π²ΡΡΠΎΠ²Π½Π΅Π½Π½ΡΠΉ ΠΏΠΎ ΠΏΡΠ°Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ (ΡΠΈΡ.3). ΠΡΠΈ ΡΡΠΎΠΌ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π°Π½ΡΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°ΡΡΡΡ ΠΏΠΎ ΠΊΠ°Π½Π°Π»Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ.
ΠΠΎΠ»ΠΎΠΆΠΈΠΌ M = M1, M2, …, Mn. ΠΠ»Ρ Π²ΡΠ΅Ρ i = 1… n Π‘i = Mi Π i, Π³Π΄Π΅ Π i — ΡΡΠ°ΡΡΠΈΠ΅ k Π±ΠΈΡΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ IDEA (Ci-1). ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΄Π²ΠΈΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΡ ΡΡΠ°ΡΡΠΈΡ k Π±ΠΈΡΠΎΠ² ΠΈ Π΄ΠΎΠΏΠΈΡΡΠ²Π°Π½ΠΈΡ ΡΠΏΡΠ°Π²Π° Pi.
ΠΡΠ΅ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ Π² ΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅, ΡΡΠΎ:
* Π½ΠΈΠΊΠ°ΠΊΠ°Ρ ΠΏΠ°ΡΠ° ΠΈΠ· ΡΡΠΈΡ ΡΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΠΌΡ Π·Π°ΠΊΠΎΠ½Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π° + (b Ρ) (Π° + b) Ρ;
* Π½ΠΈΠΊΠ°ΠΊΠ°Ρ ΠΏΠ°ΡΠ° ΠΈΠ· ΡΡΠΈΡ ΡΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π½ΠΎΠΌΡ Π·Π°ΠΊΠΎΠ½Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π° + (bΡ) (Π° + b) (Π° + Ρ).
ΠΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΡ ΡΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄Π°, ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π·Π°ΡΡΡΠ΄Π½ΡΡ ΠΊΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ· IDEA ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ DES, ΠΊΠΎΡΠΎΡΡΠΉ Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ «ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΠΠ» .
ΠΠ±ΡΠ°Ρ ΡΡ Π΅ΠΌΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° IDEA ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π² ΠΠ ΠΠΠΠΠΠΠΠ 1. 64-Π±ΠΈΡΠΎΠ²ΡΠΉ Π±Π»ΠΎΠΊ Π΄Π°Π½Π½ΡΡ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° ΡΠ΅ΡΡΡΠ΅ 16-Π±ΠΈΡΠΎΠ²ΡΡ ΡΡΠ±Π±Π»ΠΎΠΊΠ°. ΠΡΠΈ ΡΠ΅ΡΡΡΠ΅ ΡΡΠ±Π±Π»ΠΎΠΊΠ° ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π²Ρ ΠΎΠ΄ΠΎΠΌ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΊΠ» Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°. ΠΡΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²ΠΎΡΠ΅ΠΌΡ ΡΠΈΠΊΠ»ΠΎΠ². ΠΠ΅ΠΆΠ΄Ρ ΡΠΈΠΊΠ»Π°ΠΌΠΈ Π²ΡΠΎΡΠΎΠΉ ΠΈ ΡΡΠ΅ΡΠΈΠΉ ΡΡΠ±Π±Π»ΠΎΠΊΠΈ ΠΌΠ΅Π½ΡΡΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ:
(1) — ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ±Π±Π»ΠΎΠΊΠ° X1 ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°.
(2) + - ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ±Π±Π»ΠΎΠΊΠ° X2 ΠΈ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°.
(3) + - ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ±Π±Π»ΠΎΠΊΠ° Π₯3 ΠΈ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°.
(4) — ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ±Π±Π»ΠΎΠΊΠ° Π₯4 ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°.
(5) — ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°Π³ΠΎΠ² (1) ΠΈ (3).
(6) — ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°Π³ΠΎΠ² (2) ΠΈ (4).
(7) — ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠ°Π³Π° (5) ΠΈ ΠΏΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°.
(8) + - ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°Π³ΠΎΠ² (6) ΠΈ (7).
(9) — ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠ°Π³Π° (8) Ρ ΡΠ΅ΡΡΡΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΎΠΌ.
(10) + - ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°Π³ΠΎΠ² (7) ΠΈ (9).
(11) — ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°Π³ΠΎΠ² (1) ΠΈ (9).
(12) — ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°Π³ΠΎΠ² (3) ΠΈ (9).
(13) — ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°Π³ΠΎΠ² (2) ΠΈ (10).
(14) — ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°Π³ΠΎΠ² (4) ΠΈ (10).
ΠΡΡ ΠΎΠ΄ΠΎΠΌ ΡΠΈΠΊΠ»Π° ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅ΡΡΡΠ΅ ΡΡΠ±Π±Π»ΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π³ΠΎΠ² (11), (12), (13) ΠΈ (14). Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π° ΠΏΠ΅ΡΠ΅ΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π΄Π²Π° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΡΡΠ±Π±Π»ΠΎΠΊΠ° (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°), ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π²Ρ ΠΎΠ΄ Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠΊΠ»Π°.
ΠΠΎΡΠ»Π΅ Π²ΠΎΡΡΠΌΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΡ ΠΎΠ΄Π°:
(1) — ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ±Π±Π»ΠΎΠΊΠ° X1 ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°.
(2) + - ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ±Π±Π»ΠΎΠΊΠ° X2 ΠΈ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°.
(3) + - ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ±Π±Π»ΠΎΠΊΠ° Π₯3 ΠΈ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°.
(4) — ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ±Π±Π»ΠΎΠΊΠ° Π₯4 ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΡΠ΅ ΡΡΠ±Π±Π»ΠΎΠΊΠ° Y1… Y4 Π²Π½ΠΎΠ²Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠ° ΡΠΈΡΡΡΠ΅ΠΊΡΡΠ°.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ 52 ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ° (ΠΏΠΎ ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π²ΠΎΡΡΠΌΠΈ ΡΠΈΠΊΠ»ΠΎΠ² ΠΈ Π΅ΡΠ΅ ΡΠ΅ΡΡΡΠ΅ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡ ΠΎΠ΄Π°). Π‘Π½Π°ΡΠ°Π»Π° 128-Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΊΠ»ΡΡ Π΄Π΅Π»ΡΡ Π½Π° Π²ΠΎΡΠ΅ΠΌΡ 16-Π±ΠΈΡΠΎΠ²ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅ΠΉ. ΠΡΠΎ — ΠΏΠ΅ΡΠ²ΡΠ΅ Π²ΠΎΡΠ΅ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅ΠΉ Π΄Π»Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° (ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅ΠΉ — Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΈ ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ° — Π΄Π»Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°). ΠΠ°ΡΠ΅ΠΌ 128-Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΊΠ»ΡΡ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π²Π»Π΅Π²ΠΎ Π½Π° 25 Π±ΠΈΡ ΠΈ ΡΠ½ΠΎΠ²Π° Π΄Π΅Π»ΠΈΡΡΡ Π½Π° Π²ΠΎΡΠ΅ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅ΠΉ. ΠΠ΅ΡΠ²ΡΠ΅ ΡΠ΅ΡΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΡΠΈΠΊΠ»Π΅; ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΠ΅ — Π² ΡΡΠ΅ΡΡΠ΅ΠΌ ΡΠΈΠΊΠ»Π΅. ΠΠ»ΡΡ ΡΠ½ΠΎΠ²Π° ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π²Π»Π΅Π²ΠΎ Π΅ΡΠ΅ Π½Π° 25 Π±ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²ΠΎΡΡΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ Ρ. Π΄., ΠΏΠΎΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π½Π΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 1.
Π’Π°Π±Π»ΠΈΡΠ° 1 ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° IDEA
Π¦ΠΈΠΊΠ» | ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ | |
Z11 Z21 Z31 Z41 Z51 Z61 | ||
Z12 Z22 Z32 Z42 Z52 Z62 | ||
Z13 Z23 Z33 Z43 Z53 Z63 | ||
Z14 Z24 Z34 Z44 Z54 Z64 | ||
Z15 Z25 Z35 Z45 Z55 Z65 | ||
Z16 Z26 Z36 Z46 Z56 Z66 | ||
Z17 Z27 Z37 Z47 Z57 Z67 | ||
Z18 Z28 Z38 Z48 Z58 Z68 | ||
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΡ ΠΎΠ΄Π° | Z19 Z29 Z39 Z49 | |
2.3.2 Π‘ΠΊΠΎΡΠΎΡΡΡ IDEA
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ IDEA ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² Π΄Π²Π° ΡΠ°Π·Π° Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ DES. ΠΠ° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Ρ i386/33 ΠΠΡ IDEA ΡΠΈΡΡΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ 880 ΠΠ±ΠΈΡ/Ρ, Π° Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Ρ i486/33 ΠΠΡ — ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ 2400 ΠΠ±ΠΈΡ/Ρ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ PES Π½Π° Π±Π°Π·Π΅ Π‘ΠΠΠ‘ ΡΠΈΡΡΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ 55 ΠΠ±ΠΈΡ/Ρ ΠΏΡΠΈ ΡΠ°ΠΊΡΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΎΡΠ΅ 25 ΠΠΡ. ΠΡΡΠ³Π°Ρ Π‘ΠΠΠ‘, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ ETH Zurich ΠΈ ΡΠΎΡΡΠΎΡΡΠ°Ρ ΠΈΠ· of 251 000 ΡΡΠ°Π½Π·ΠΈΡΡΠΎΡΠΎΠ² Π½Π° ΠΊΡΠΈΡΡΠ°Π»Π»Π΅ ΠΏΠ»ΠΎΡΠ°Π΄ΡΡ 107.8 ΠΌΠΌ 2, ΡΠΈΡΡΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° IDEA ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ 177 ΠΠ±ΠΈΡ/Ρ ΠΏΡΠΈ ΡΠ°ΠΊΡΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΎΡΠ΅ 25 ΠΠΡ.
ΠΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ IDEA OFB ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Π² ΡΠ°Π±ΠΎΡΠ΅ ΡΠΈΡΡΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ ΠΎΠΊΠΎΠ»ΠΎ 100 ΠΊΠ±ΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ.
2.3.3 ΠΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ· IDEA
ΠΠ»ΠΈΠ½Π° ΠΊΠ»ΡΡΠ° IDEA ΡΠ°Π²Π½Π° 128 Π±ΠΈΡΠ°ΠΌ — Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π² Π΄Π²Π° ΡΠ°Π·Π° Π΄Π»ΠΈΠ½Π½Π΅Π΅ ΠΊΠ»ΡΡΠ° DES. ΠΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠΊΡΡΡΠΈΠ΅ Π³ΡΡΠ±ΠΎΠΉ ΡΠΈΠ»ΠΎΠΉ, Π΄Π»Ρ Π²ΡΠΊΡΡΡΠΈΡ ΠΊΠ»ΡΡΠ° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ 2128 (1038) ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠΉ. ΠΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΌΠΈΠ»Π»ΠΈΠ°ΡΠ΄ ΠΊΠ»ΡΡΠ΅ΠΉ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΌΠΈΠ»Π»ΠΈΠ°ΡΠ΄ ΡΠ°ΠΊΠΈΡ ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌ, ΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ 1013 Π»Π΅Ρ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ — ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π²ΠΎΠ·ΡΠ°ΡΡ Π²ΡΠ΅Π»Π΅Π½Π½ΠΎΠΉ. 1024 ΡΠ°ΠΊΠΈΡ ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌ ΠΌΠΎΠ³ΡΡ Π½Π°ΠΉΡΠΈ ΠΊΠ»ΡΡ Π·Π° Π΄Π΅Π½Ρ, Π½ΠΎ Π²ΠΎ Π²ΡΠ΅Π»Π΅Π½Π½ΠΎΠΉ Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΡΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ Π°ΡΠΎΠΌΠΎΠ² ΠΊΡΠ΅ΠΌΠ½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΌΠ°ΡΠΈΠ½Ρ.
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠΊΡΡΡΠΈΠ΅ Π³ΡΡΠ±ΠΎΠΉ ΡΠΈΠ»ΠΎΠΉ — Π½Π΅ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± Π²ΡΠΊΡΡΡΠΈΡ IDEA. ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π½ΠΎΠ², ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ . Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΌ ΠΊ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΊΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·Ρ. ΠΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΌΠ°ΡΠΊΠΎΠ²ΡΠΊΠΎΠ³ΠΎ ΡΠΈΡΡΠ° ΠΈ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ, ΡΡΠΎ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΊ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΊΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½Π° ΠΈ ΠΎΡΠ΅Π½Π΅Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΡΠΈΠΊ ΠΠ°ΠΉ (Lai) ΡΡΠ²Π΅ΡΠΆΠ΄Π°Π» (ΠΎΠ½ ΠΏΡΠΈΠ²Π΅Π» ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ), ΡΡΠΎ IDEA ΡΡΡΠΎΠΉΡΠΈΠ² ΠΊ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΊΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·Ρ ΡΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ 4 ΠΈΠ· 8 ΡΡΠ°ΠΏΠΎΠ². Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΠΈΡ Π°ΠΌΡ, Π΅Π³ΠΎ ΠΏΠΎΠΏΡΡΠΊΠ° Π²ΡΠΊΡΡΡΡ IDEA Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·Π° ΡΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌΠΈ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΡΠ²Π΅Π½ΡΠ°Π»Π°ΡΡ ΡΡΠΏΠ΅Ρ ΠΎΠΌ.
ΠΠΈΠ»Π»ΠΈ ΠΠ°ΠΉΠ΅Ρ (Willi Meier) ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π» ΡΡΠΈ Π°Π»Π³Π΅Π±ΡΠ°ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ IDEA ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π», ΡΡΠΎ, Ρ ΠΎΡΡ ΠΎΠ½ΠΈ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ, Π΅ΡΡΡ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ. ΠΠ³ΠΎ Π²ΡΠΊΡΡΡΠΈΠ΅ 2-ΡΡΠ°ΠΏΠ½ΠΎΠ³ΠΎ IDEA ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ Π²ΡΠΊΡΡΡΠΈΡ Π³ΡΡΠ±ΠΎΠΉ ΡΠΈΠ»ΠΎΠΉ (242 ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ), Π½ΠΎ Π΄Π»Ρ IDEA Ρ 3 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΠΏΠ°ΠΌΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ Π²ΡΠΊΡΡΡΠΈΡ Π±ΡΠ»Π° Π½ΠΈΠΆΠ΅ Π²ΡΠΊΡΡΡΠΈΡ Π³ΡΡΠ±ΠΎΠΉ ΡΠΈΠ»ΠΎΠΉ. ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ 8-ΡΡΠ°ΠΏΠ½ΠΎΠ³ΠΎ IDEA ΠΎΡΡΠ°Π»Π°ΡΡ Π½Π΅ΠΏΠΎΠΊΠΎΠ»Π΅Π±ΠΈΠΌΠΎΠΉ.
ΠΠΆΠΎΠ°Π½ ΠΡΠΉΠΌΠ΅Π½ (Joan Daemen) ΠΎΡΠΊΡΡΠ»Π° ΠΊΠ»Π°ΡΡ ΡΠ»Π°Π±ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ IDEA. ΠΡΠΈ ΠΊΠ»ΡΡΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»Π°Π±ΡΠΌΠΈ Π² ΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ»Π°Π±Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ»ΡΡΠΈ DES, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½Π° ΡΠ°ΠΌΠΎΠΉ ΡΠ΅Π±Π΅. Π‘Π»Π°Π±ΠΎΡΡΡ ΡΡΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Π·Π»ΠΎΠΌΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠΊΡΡΡΠΈΡ Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ ΠΎΡΠΊΡΡΡΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π°Π±ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠ»ΡΡ (Π² ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠΈΡΠΈΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ):
0000,0000,0×00,0000,0000,000x, xxxx, x000
Π ΠΏΠΎΠ·ΠΈΡΠΈΠΈ «x» ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΡΡΡ Π»ΡΠ±Π°Ρ ΡΠΈΡΡΠ°. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ΅ XOR ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠ°Ρ ΠΎΡΠΊΡΡΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠΌΡ XOR ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΡ ΡΡ ΠΏΠ°Ρ ΡΠΈΡΡΠΎΡΠ΅ΠΊΡΡΠΎΠ².
Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΡΠ»Π°Π±ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»Π°: ½96. ΠΠΏΠ°ΡΠ½ΠΎΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ»ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. Π ΡΠΎΠΌΡ ΠΆΠ΅, Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ IDEA ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ»Π°Π±ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ — Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ XOR ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ° Ρ ΡΠΈΡΠ»ΠΎΠΌ 0x0dae.
IDEA ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΈΠ· ΡΠ΅ΠΆΠΈΠΌΠΎΠ² ΡΠ°Π±ΠΎΡΡ Π±Π»ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΡΠ°, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² Π³Π»Π°Π²Π΅ 9. ΠΡΠΎΡΠΈΠ² Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ IDEA ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΠΎ ΡΠΎ ΠΆΠ΅ Π²ΡΠΊΡΡΡΠΈΠ΅ «Π²ΡΡΡΠ΅ΡΠ° ΠΏΠΎΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅», ΡΡΠΎ ΠΈ ΠΏΡΠΎΡΠΈΠ² DES. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ»ΡΡ IDEA Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π² Π΄Π²Π° ΡΠ°Π·Π° Π΄Π»ΠΈΠ½Π½Π΅Π΅ ΠΊΠ»ΡΡΠ° DES, ΡΡΠΎ Π²ΡΠΊΡΡΡΠΈΠ΅ Π½Π΅ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎ. ΠΠ±ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎΠΉ Π΄Π»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ Π²ΡΠΊΡΡΡΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΡΠΎΡΡΠ°Π²ΠΈΡ 64*2128 Π±ΠΈΡΠΎΠ², ΠΈΠ»ΠΈ 1039 Π±Π°ΠΉΡΠΎΠ².
ΠΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ IDEA Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΠΌΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄Π»ΠΈΠ½Π½ΡΠΌΠΈ ΠΊΠ»ΡΡΠ°ΠΌΠΈ. ΠΠ»Ρ IDEA Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΅Π³ΠΎ 52 16-Π±ΠΈΡΠΎΠ²ΡΡ ΠΊΠ»ΡΡΠ°, ΠΎΠ±ΡΠ΅ΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ 832 Π±ΠΈΡΠΎΠ². ΠΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅ΠΉ, Π½ΠΎ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ.
Π Π½Π°ΠΈΠ²Π½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ Π²Π΄Π²ΠΎΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ Π±Π»ΠΎΠΊΠ°. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π» Π±Ρ Ρ 32-Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ΄Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Π²ΠΌΠ΅ΡΡΠΎ 16-Π±ΠΈΡΠΎΠ²ΡΡ ΠΈ Ρ 256-Π±ΠΈΡΠΎΠ²ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ. Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡ Π±Ρ Π±ΡΡΡΡΠ΅Π΅, ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·ΡΠΎΡΠ»Π° Π±Ρ Π² 232 ΡΠ°Π·Π°. ΠΠ»ΠΈ Π½Π΅Ρ? Π’Π΅ΠΎΡΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΎΠΏΠΈΡΠ°Π΅ΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ 216 +1 ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ. Π 232 + 1 ΠΏΡΠΎΡΡΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π», Π½ΠΎ Π΅Π³ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΈΠ½ΠΎΠΉ. ΠΠ°ΠΉ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π±ΡΠ΄Π΅Ρ Π½Π΅Π»Π΅Π³ΠΊΠΎ.
Π₯ΠΎΡΡ IDEA ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅ DES, Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄ΡΡΠ³ΠΈΠΌ Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΡΠ»ΠΈ Π²Π°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ 64-Π±ΠΈΡΠΎΠ²ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ 128-Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° IDEA ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ. ΠΠ»Ρ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ 128-Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΊΠ»ΡΡ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΠ² 64-Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΊΠ»ΡΡ ΡΠ°ΠΌ Ρ ΡΠΎΠ±ΠΎΠΉ. ΠΠΎ ΡΡΠ° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ ΠΎΡΠ»Π°Π±Π»ΡΠ΅Ρ IDEA.
ΠΡΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ»Π½ΡΠ΅Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ, Π° Π½Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π²Π°ΡΠΈΠ°Π½Ρ IDEA Ρ ΠΌΠ΅Π½ΡΡΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΡΡΠ°ΠΏΠΎΠ². Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π»ΡΡΡΠ΅Π΅ Π²ΡΠΊΡΡΡΠΈΠ΅ IDEA Π±ΡΡΡΡΠ΅Π΅ Π²ΡΠΊΡΡΡΠΈΡ Π³ΡΡΠ±ΠΎΠΉ ΡΠΈΠ»ΠΎΠΉ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ 2.5 ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΡΠ°ΠΏΠΎΠ², 4-ΡΡΠ°ΠΏΠ½ΡΠΉ IDEA Π±ΡΠ΄Π΅Ρ Π² Π΄Π²Π° ΡΠ°Π·Π° Π±ΡΡΡΡΠ΅Π΅ ΠΈ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, Π΅Π³ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π½Π΅ ΡΠΌΠ΅Π½ΡΡΠΈΡΡΡ.
Π₯ΠΎΡΡ ΠΏΠΎΠΏΡΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·Π° IDEA Π±ΡΠ»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ, Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π½ΠΈ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ.
2.3.4ΠΡΠ²ΠΎΠ΄Ρ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ
IDEA — ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΠΎΠ²ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎΠΊΠ° ΠΎΡΡΠ°ΡΡΡΡ ΠΎΡΠΊΡΡΡΡΠΌΠΈ. ΠΠ±ΡΠ°Π·ΡΠ΅Ρ Π»ΠΈ IDEA Π³ΡΡΠΏΠΏΡ? ΠΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡΠΊΡΡΡΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π²ΡΠΊΡΡΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΡΡΠ°? Π£ IDEA ΡΠ²Π΅ΡΠ΄Π°Ρ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π°, Π½ΠΎ ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π° ΠΊΠ°Π·Π°Π²ΡΠΈΠ΅ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΊΠ°ΠΏΠΈΡΡΠ»ΠΈΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΎΠ²ΡΠΌΠΈ ΡΠΎΡΠΌΠ°ΠΌΠΈ ΠΊΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·Π°. Π ΡΠ΄ Π³ΡΡΠΏΠΏ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈ Π²ΠΎΠ΅Π½Π½ΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π½Π΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΡΠ²ΠΎΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΊΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·Π° IDEA. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΆΠ΅ Π΄ΠΎΠ±ΠΈΠ»ΡΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΠΎΠ±ΡΠ΅ΡΡΡ ΡΡΠΏΠ΅Ρ Π°.
IDEA Π·Π°ΠΏΠ°ΡΠ΅Π½ΡΠΎΠ²Π°Π½ Π² ΠΠ²ΡΠΎΠΏΠ΅ ΠΈ Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ Π¨ΡΠ°ΡΠ°Ρ . ΠΠ°ΡΠ΅Π½Ρ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Ascom-Tech AG. ΠΠ»Ρ Π½Π΅ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ.
3. ΠΠΠΠ‘ΠΠΠΠ Π ΠΠΠ ΠΠΠΠ’ΠΠΠΠ«Π₯ ΠΠ ΠΠΠ ΠΠΠ ΠΠ°ΠΆΠ΄ΡΠΉ Π°Π±ΠΎΠ½Π΅Π½Ρ ΡΠ΅ΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π² ΡΠ²ΠΎΡΠΌ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΡ:
— Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° X ΠΈ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ Y Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠΈΡΡΠΈ ΠΈ Π₯Π΅Π»ΠΌΠ°Π½Π° (ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ Π»ΠΈΡΡΠΈΠ½Π³ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 2);
— ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ (ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ) ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ IDEA Ρ OFB (ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ Π»ΠΈΡΡΠΈΠ½Π³ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 3). ΠΡΠΈΡΡΠΌ k = 32 Π±ΠΈΡΠ°.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π½ΡΡΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ (ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 4) Π²ΠΊΠ»ΡΡΠ°Π΅Ρ:
— Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ L*L*128 Π±ΠΈΡ;
— Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΏΠ°ΡΠ½ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΡΡΡΠΈΠ΅ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π¦Π Π, Π½ΠΎ ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ. ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ·Π²Π°Π½ΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 5 ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΈΡΡΠΈΠ½Π³ΠΈ ΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ . ΠΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ h-ΡΠ°ΠΉΠ»Ρ, Π½ΠΎ Π΄Π»Ρ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ Π² Π»ΠΈΡΡΠΈΠ½Π³Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π΅ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ *.cpp.
ΠΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² ΡΡΠ΅Π΄Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Turbo C++ v1.01, ΠΈ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠΎΠ»ΡΠΊΠΎ i8086 ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈΠΌΠ΅ΡΡ ΠΎΡΠ΅Π½Ρ Π½ΠΈΠ·ΠΊΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ΅. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π°ssembler’Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ.
4. ΠΡΠΈΠΏΡΠΎΡΡΠΎΠΉΠΊΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΊΠ»ΡΡΠ° (ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ΅ΠΆΠΈΠΌ) Π²ΡΠ±ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΌΠ°ΡΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ»ΡΡ ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΠΉ (L=5). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π’ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π’[6,6] ΠΈ Π΄Π»ΠΈΠ½Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π²Π½ΡΡ Π΄Π»ΠΈΠ½Π΅ ΠΊΠ»ΡΡΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ (128 Π±ΠΈΡ). ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ ΡΠ°Π²Π½ΠΎΠ²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ.
ΠΠ΄ΡΠ΅ΡΠ° Π°Π±ΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠ²Π»ΡΡΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ Π²ΠΈΠ΄Π° Π i=(P1i, P2i, …, PLi), Π³Π΄Π΅ L = 6. Π Π°Π·ΠΌΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π°Π΄ΡΠ΅ΡΠ° ΡΠ°Π²Π΅Π½ 16 Π±ΠΈΡΠ°ΠΌ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°Π±ΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ (216 > 50 000). ΠΠ΄ΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²Π΅ΠΊΡΠΎΡΠ° Π±ΡΠ»ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ-Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ.
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ Si ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠΈ Π±ΡΠ΄ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π²Π½ΠΎΠ²Π΅ΡΠΎΡΡΠ½ΡΠΌΠΈ ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ-Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ ΠΊΡΠΈΠΏΡΠΎΡΡΠΎΠΉΠΊΠΎΡΡΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΠΉ. ΠΡΠ»ΠΈ ΠΆΠ΅ Π½Π°ΡΡΡΠΈΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΠ» (ΠΈΠ»ΠΈ Π΅ΠΌΡ ΡΡΠ°Π»ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ) Π±ΠΎΠ»Π΅Π΅ 6 ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΈΠΌ Π°Π΄ΡΠ΅ΡΠΎΠ² Π°Π±ΠΎΠ½Π΅Π½ΡΠΎΠ², ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠ°ΡΠΊΡΡΡΠΎΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½Ρ Π»ΡΠ±ΡΠ΅ ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ.
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠΈΡΡΠΈ ΠΈ Π₯Π΅Π»ΠΌΠ°Π½Π° Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π°Π½ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° (ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ) ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅:
— Π — 128 Π±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ;
— g — Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΏΠΎΠ»Ρ Zp (64 Π±ΠΈΡΠ°, Π²ΡΠ±ΠΈΡΠ°Π»ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΠΏΠΎ ΡΠ΅ΠΎΡΠ΅ΠΌΠ΅ ΠΠ»ΡΠ±Π΅ΡΡΠ°);
— X — ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ 64 Π±ΠΈΡΠ°;
— Kij — ΡΠ΅Π°Π½ΡΠΎΠ²ΡΠΉ ΠΊΠ»ΡΡ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ Π΄Π»ΠΈΠ½Ρ 128 Π±ΠΈΡ.
ΠΡΠΈΠΏΡΠΎΡΡΠΎΠΉΠΊΠΎΡΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ Π΅ΠΌΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΡΡΠ΄Π½ΠΎΡΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³Π°ΡΠΈΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ»Ρ ΠΊΠ»ΡΡΠ° 128 Π±ΠΈΡ Π·Π°Π΄Π°ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ΡΠ°Π·ΡΠ΅ΡΠΈΠΌΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ±ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ N ΠΈ g ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. Π§ΠΈΡΠ»ΠΎ (N-1)/2 ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠΎΡΡΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ, Π° ΡΠΈΡΠ»ΠΎ g Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΠ΄Π³ΡΡΠΏΠΏΡ ΠΌΡΠ»ΡΡΠΈΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ N.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π Π΄Π°Π½Π½ΠΎΠΉ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ .
ΠΡΠΎΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΊΡΠΈΠΏΡΠΎΡΡΠΎΠΉΠΊΠΎΡΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ» Π²ΡΡΠΎΠΊΡΡ ΡΡΠΎΠΉΠΊΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΡ Π΅ΠΌ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π·Π°ΡΠ΅ΠΊΡΠ΅ΡΠ΅Π½Π½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ.
ΠΠ‘ΠΠΠΠ¬ΠΠ£ΠΠΠΠ― ΠΠΠ’ΠΠ ΠΠ’Π£Π Π
1. Π. Π. ΠΠ°ΡΠ°Π½ΠΎΠ², Π. Π. ΠΠΎΡΠΈΡΠ΅Π½ΠΊΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅, ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. — ΠΡΡΠ», 1997 Π³.
2. Π. Π. ΠΠΎΠΌΠ°ΡΠ΅Π² ΠΈ Π΄ΡΡΠ³ΠΈΠ΅, ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π·Π°ΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. -Π. «ΠΠΎΠ»ΠΈΠ΄ΠΆ», 2000 Π³.
ΠΠ ΠΠΠΠΠΠΠΠ 1
Π‘Ρ Π΅ΠΌΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° IDEA (ΡΠ΅ΠΆΠΈΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ).
ΠΠ ΠΠΠΠΠΠΠΠ 2
ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°.
#include «ext128.cpp»
#include
#include
#include
void main (int argc, char **argv)
{
FILE *keyX;
FILE *_ey;
unsigned P[8] = {0xbcd3,0xfa20,0xc188,0×51ea, 0×89ae, 0xc0f2,0xf780,0xce2a};
unsigned a[8] = {0×89e, 0xc55,0x8fb, 0x5b42,0,0,0,0};
unsigned X[8] = {0,};
char dest1[9];
char dest2[9];
char *n1 = «u», *ext1 = «.x», *ext2 = «.y»;
strcpy (dest1, n1);
strcat (dest1, argv[1]);
strcat (dest1, ext1);
keyX = fopen (dest1, «wb»);
strcpy (dest2, n1);
strcat (dest2, argv[1]);
strcat (dest2, ext2);
_ey = fopen (dest2, «wb»);
randomize ();
for (int i=0; i<7; i++) X[i] = rand ()%0xffffU;
X[7] = rand ()%0xce29U;
fwrite (&X, sizeof (unsigned), 8, keyX);
fclose (keyX);
unsigned temp1[18] = {0,};
Pow_N (a, X, P, temp1);
fwrite (&temp1, sizeof (unsigned), 8, _ey);
fclose (keyY);
}
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½ΠΎΠΌΠ΅Ρ Π°Π±ΠΎΠ½Π΅Π½ΡΠ°: genx_y.exe 20. ΠΠ΄Π΅ 20 — Π½ΠΎΠΌΠ΅Ρ Π°Π±ΠΎΠ½Π΅Π½ΡΠ°.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ΄ΡΡ ΡΠ°ΠΉΠ»Ρ u20. x ΠΈ u20.y.
ΠΠ ΠΠΠΠΠΠΠΠ 3
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ IDEA Ρ OFB.
#include «idea.cpp»
#include
#include
#include
#include
int main (int argc, char **argv)
{
clrscr ();
//————————————data———————————;
FILE *message;
FILE *sincfile;
FILE *rezfile;
FILE *keyfile;
unsigned key[8] = {0,};
unsigned WorkKey[52] = {0,};
unsigned sinc[4] = {0,};
//——————————-end of data—————————;
if ((message = fopen (argv[1], «rb»)) == NULL)
{
cout << «input file «<< argv[1] << «not open.»;
return 1;
}
if ((rezfile = fopen (argv[2], «wb»)) == NULL)
{
cout << «file «<< argv[2] << «not open.»;
return 1;
}
if ((keyfile = fopen (argv[3], «rb»)) == NULL)
{
cout << «file «<< argv[4] << «not open.»;
return 1;
}
if ((sincfile = fopen (argv[4], «rb»)) == NULL)
{
cout << «file «<< argv[4] << «not open.»;
return 1;
}
//—————————————————————————;
fread (key, sizeof (unsigned), 8, keyfile);
fclose (keyfile);
GenerateKey (key, WorkKey);
//—————————————————————————;
fread (sinc, sizeof (unsigned), 4, sincfile);
fclose (sincfile);
//—————————————————————————;
long len=filelength (fileno (message));
unsigned temp[3]={0,};
do
{
if (len > 6)
{
fread (temp, sizeof (unsigned), 3, message);
IDEA_OFB (temp, WorkKey, sinc, 3);
fwrite (&temp, sizeof (unsigned), 3, rezfile);
len -= 6;
}
else
{
memset (temp, 0,3);
fread (temp, sizeof (unsigned char), len, message);
int n = ((len%2)==1)?(len/2+1):len/2;
for (int i=0; i
fwrite (&temp, sizeof (unsigned), n, rezfile);
len = -1;
}
cout << endl << len;
}while (len > 0);
//—————————————————————————;
fclose (message);
fclose (rezfile);
//—————————————————————————;
cout << endl << «© Bashmakov A.V. Orel, 2001»;
return 0;
}
ΠΠ° Π²Ρ ΠΎΠ΄ ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠ΄Π°ΡΡΡΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ (ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ), ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ, ΡΠ°ΠΉΠ» Ρ ΠΊΠ»ΡΡΠΎΠΌ (ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠΉ) ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠΏΠΎΡΡΠ»ΠΊΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: idea_ofb.exe mao. bmp rez.txt u20. lin sin.sin.
Π‘ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ 100 ΠΊΠ±Π°ΠΉΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ.
ΠΠ ΠΠΠΠΠΠΠΠ 4
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π¦Π Π.
ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ.
// generate matrix T[N][N][8];
#include «lin.cpp»
#include
void main ()
{
FILE *file_T;
unsigned T[N][N] = {0,};
file_T = fopen («matrix.lin», «wb»);
for (int i=0; i<8; i++)
{
GenerateT (T);
fwrite (&T, sizeof (unsigned), N*N, file_T);
}
fclose (file_T);
}
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΉΠ» matrix.lin.
ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°.
#include «lin.cpp»
#include «ext128.cpp»
#include
#include
#include
#include
//———————————————————————————;
int main (int argc, char **argv)
{
if (argc < 4)
{
cout << endl
<< «crk.exe U1_number U2_number U1. x U2.y file. t»
<< endl;
return 1;
}
//====================initialization data=================
FILE *osnkey;
FILE *rezkey;
FILE *stat;
FILE *X_file;
FILE *Y_file;
FILE *T_file;
unsigned Num1 = atoi (argv[1]), (c);
unsigned Num2 = atoi (argv[2]);
char dest1[9];
char dest2[9];
char dest3[9];
char *n1 = «u», *ext1 = «.lin», *ext2 = «.d_h»;
strcpy (dest1, n1);
strcat (dest1, argv[1]);
strcat (dest1, ext1);
if ((osnkey = fopen (dest1, «wb»)) == NULL)
{
cout << «KeyFile not open.»;
return 1;
}
strcpy (dest2, n1);
strcat (dest2, argv[1]);
strcat (dest2, ext2);
if ((rezkey = fopen (dest2, «wb»)) == NULL)
{
cout << «KeyFile not open.»;
return 1;
}
if ((stat = fopen («stat.txt», «wt»)) == NULL)
{
cout << «stat.txt not open.»;
return 1;
}
if ((X_file = fopen (argv[3], «rb»)) == NULL)
{
cout << argv[2] << «not open.»;
return 1;
}
if ((Y_file = fopen (argv[4], «rb»)) == NULL)
{
cout << argv[3] << «not open.»;
return 1;
}
if ((T_file = fopen (argv[5], «rb»)) == NULL)
{
cout << argv[4] << «not open.»;
return 1;
}
unsigned key1[8] = {0,};
unsigned key2[8] = {0,};
unsigned X[17] = {0,};
unsigned Y[17] = {0,};
//=====================================================
unsigned R1[N] = {0,};
unsigned R2[N] = {0,};
unsigned T[N][N] = {0,};
GenerateR (R1,Num1);
GenerateR (R2,Num2);
for ((c)=0; (c)<8; (c)++)
{
fread (T, sizeof (unsigned), N*N, T_file);
key1[(c)] = FormDubleKey (T, R1, R2);
}
fclose (T_file);
fwrite (&key1, sizeof (unsigned), 8, osnkey);
fclose (osnkey);
//=====================================================
// X — secret key
// Y — public key
unsigned P[17] = {0xbcd3,0xfa20,0xc188,0×51ea, 0×89ae, 0xc0f2,0xf780,0xce2a};
// unsigned a[8] = {0×89e, 0xc55,0x8fb, 0x5b42,0,0,0,0};
fread (X, sizeof (unsigned), 8, X_file);
fclose (X_file);
fread (Y, sizeof (unsigned), 8, Y_file);
fclose (Y_file);
Pow_N (Y, X, P, key2);
fwrite (&key2, sizeof (unsigned), 8, rezkey);
fclose (rezkey);
//=====================================================
int j;
fprintf (stat, «ttΠ€Π°ΠΉΠ» ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π΄Π»Ρ Π¦Π Π. n»);
fprintf (stat, «tΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ 1: %d. tΠ°Π΄ΡΠ΅Ρ: «, Num1);
for (j = 5; j >= 0; j—) fprintf (stat, «%.4X», R1[j]);
fprintf (stat, «ntΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ 2: %d. tΠ°Π΄ΡΠ΅Ρ: «, Num2);
for (j = 5; j >= 0; j—) fprintf (stat, «%.4X», R2[j]);
fprintf (stat, «nt1) ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ»ΡΡ: ntt»);
for (j = 7; j >= 0; j—) fprintf (stat, «%.4X», key1[j]);
fprintf (stat, «nt2) Π Π΅Π·Π΅ΡΠ²Π½ΡΠΉ ΠΊΠ»ΡΡ: ntt»);
for (j = 7; j >= 0; j—) fprintf (stat, «%.4X», key2[j]);
fprintf (stat, «nnt (c)2001 A. Bashmakov»);
//=====================================================
return 0;
}
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ):
crk.exe U1_number U2_number U1. x U2.y matrix.lin.
Π’ΠΎ Π΅ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½ΠΎΠΌΠ΅ΡΠ° Π°Π±ΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΡΠ·Ρ, ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°Π±ΠΎΠ½Π΅Π½ΡΠ°, ΠΎΡΠΊΡΡΡΡΠΉ ΠΊΠ»ΡΡ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΈ ΡΠ°ΠΉΠ» ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ²Π»ΡΡΡΡΡ Π΄Π²Π° ΡΠ°ΠΉΠ»Π° Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ (*.lin) ΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠΌ (*.d_h) ΠΊΠ»ΡΡΠ°ΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΠΉΠ»-ΠΎΡΡΡΡΠ° stat.txt.
ΠΡΠΈΠΌΠ΅Ρ ΠΎΡΡΡΡΠ°:
Π€Π°ΠΉΠ» ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π΄Π»Ρ Π¦Π Π.
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ 1: 10. Π°Π΄ΡΠ΅Ρ: 4F570112060A6AF33436B67A
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ 2: 20. Π°Π΄ΡΠ΅Ρ: E827254578884F57060A3436
1) ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ»ΡΡ:
4FA0F597B4F49770365581D7ACB2F3BF
2) Π Π΅Π·Π΅ΡΠ²Π½ΡΠΉ ΠΊΠ»ΡΡ:
5FA91077838BDEFB20DD14BAE77A8B19
(c)2001 A. Bashmakov
ΠΠ ΠΠΠΠΠΠΠΠ 5
ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
1. lin. cpp
//===================© Bashmakov A.V. Orel, 2001===========
//= started 23.10 03.05.01 =
//= finished 21.14 24.05.01 =
//=====================================================
#include
//—————————————————————————————————————;
#define N 6
//—————————————————————————————————————;
void GenerateT (unsigned T[N][N]);
void GenerateR (unsigned R[N], unsigned);
unsigned FormDubleKey (unsigned T[N][N], unsigned R1[N], unsigned R2[N]);
unsigned long Pow_N (unsigned long, unsigned long, unsigned long);
//———————————————————————————————————-;
void GenerateT (unsigned T[N][N])
{
unsigned temp = 0;
for (int i = 0; i < N; i++)
{
for (int j = temp; j < N; j++)
{
if (i == j) T[i][j] = rand ()%0xffffU;
else T[i][j] = T[j][i] = rand ()%0xffffU;
}
temp ++;
}
}
//————————————————————————————————————;
void GenerateR (unsigned R[N], unsigned number)
{
for (int i=0; i
}
//————————————————————————————————————;
unsigned FormDubleKey (unsigned T[N][N], unsigned R1[N], unsigned R2[N])
{
unsigned long temp1 = 0U;
unsigned long temp2 = 0U;
unsigned S[N] = {0U,};
for (int i=0; i
{
temp2 = 0;
for (int j=0; j
{
temp1 = ((unsigned long) T[i][j] * R1[j]);
temp2 = ((temp1%0xffffU) + temp2)%0xffffU;
}
S[i] = (unsigned)temp2;
}
temp2 = 0;
for (i=0; i
{
temp1 = (unsigned long) S[i] * R2[i];
temp2 = ((temp1%0xffffU) + temp2)%0xffffU ;
}
return temp2;
}
//————————————————————————————————————;
unsigned long Pow_N (unsigned long a, unsigned long k, unsigned long n)
{
unsigned long A, B, K, q, r;
K=k;
B=1;
A=a;
s2: q=K/2;
r=K-2*q;
K=q;
if (r==0) goto s5;
B=(A*B)%n;
if (K==0) return B;
s5: A=(A*A)%n;
goto s2;
}
2. ext128. cpp
//====================128 bits ariphmetics==================
//=====================23.05.01====20.42==================
//===================© 2001 by A. Bashmakov==============
union Data
{
unsigned a[2];
unsigned long b;
}point;
//———————————————————————————————-;
void Mult16 (unsigned *, unsigned *, unsigned *);
void Div16 (unsigned *, unsigned *, unsigned *, unsigned *);
void Sum16 (unsigned *, unsigned *, unsigned *);
void Razn16 (unsigned *, unsigned *, unsigned *);
void Pow_N (unsigned *, unsigned *, unsigned *, unsigned *);
void ModN (unsigned *, unsigned *);
//———————————————————————————————-;
void Mult16(unsigned a[9], unsigned b[9], unsigned rez[18])
{ // a * b = rez; a & b max 128 bit, rez — 256 bit
unsigned st16 = 0U;
unsigned ml16 = 0U;
unsigned long temp = 0L;
for (int j=0; j<16; j++) rez[j] = 0U;
a[8] = 0;
b[8] = 0;
for (j=0; j<9; j++)
{
for (int i=0; i<9; i++)
{
if (i == 0)
{
rez[9 + j] = st16;
st16 = 0;
}
point.b = (unsigned long) a[i] * (unsigned long) b[j];
ml16 = point. a[0];
temp = (unsigned long) rez[i+j] + (unsigned long) ml16 + st16;
rez[i+j] += ml16 + st16;
st16 = point. a[1] + (unsigned)(temp>>16);
if ((j == 8)&&(i == 8)) rez[i+j+1] = st16;
}
}
}
//———————————————————————————————-;
void Sum16(unsigned a[16], unsigned b[16], unsigned rez[16])
{ // a + b = rez;
unsigned perepS = 0;
unsigned j = 0;
for (int i=0; i<8; i++)
{
point.b = (unsigned long) b[i] + (unsigned long) a[i] + perepS;
rez[j] = point. a[0];
perepS = point. a[1];
j++;
}
rez[j] = perepS;
}
//———————————————————————————————-;
void ModN (unsigned a[16], unsigned m[8])
{ // a (mod m);
int i = 16;
do {i—;} while (a[i]==0);
int j = 8;
do {j—;} while (m[j]==0);
unsigned *temp1 = new unsigned [16];
unsigned *temp2 = new unsigned [16];
if ((i>j)||((i==j)&&(a[i]>m[j])))
{
do
{
for (int g=0; g<16; g++) temp1[g] = 0;
if (a[i] >= m[j])
{
point.b = (a[i] / m[j]);
temp1[i — j] = (point.a[0] == 0)?1:point.a[0];
}
else
{
i—;
point.a[0] = a[i];
point.a[1] = a[i+1];
point.b = (point.b / m[j]) — 1;
temp1[i — j] = (point.a[0] == 0)?1:point.a[0];
temp1[i — j + 1]= point. a[1];
}
Mult16(m, temp1, temp2);
Razn16(a, temp2, temp1);
for (g=0; g<16; g++) a[g] = temp1[g];
i = 16;
do
{ i—;
if (i == -1) {i=0; break;}
}while (a[i]==0);
}while (i≠j);
for (int g=8; g<16; g++) temp2[g] = 0;
for (g=0; g<8; g++) temp2[g] = m[g];
while (a[i]>=m[j])
{
Razn16(a, temp2, temp1);
for (g=0; g<16; g++) a[g] = temp1[g];
};
};
delete temp1;
delete temp2;
}
//———————————————————————————————-;
void Razn16(unsigned a[16], unsigned b[16], unsigned rez[16])
{ // a — b = rez;
for (int i=0; i<16; i++) rez[i] = 0;
unsigned *temp = new unsigned [17];
for (i=0; i<16; i++) temp[i] = a[i];
temp[17] = 0;
unsigned p = 17;
do {p—;} while (a[p]==0);
for (i=0; i<=p; i++)
{
point.a[0] = temp[i];
point.a[1] = temp[i+1];
point.b -= b[i];
rez[i] = point. a[0];
temp[i+1] = point. a[1];
}
rez[i] = temp[i];
delete temp;
}
//———————————————————————————————-;
void Pow_N (unsigned a[8], unsigned b[8], unsigned mod[8], unsigned rez[8])
{
unsigned *temp = new unsigned [9];
unsigned *temp1 = new unsigned [16];
int f;
for (int i = 0; i<8; i++) temp[i] = a[i];
temp[8] = 0;
for (i = 0; i<16; i++) temp1[i] = 0;
unsigned p = 8;
do {p—;} while (b[p]==0);
unsigned g = 16;
do {g—;} while (((b[p] >> g)&0×1) == 0);
g—;
for (i = g; i>=0; i—)
{
Mult16(temp, temp, temp1);
ModN (temp1, mod);
for (f = 8; f>=0; f—) temp[f] = temp1[f];
if (((b[p] >> i)&0×1) == 1)
{
Mult16(temp, a, temp1);
ModN (temp1, mod);
for (f = 8; f>=0; f—) temp[f] = temp1[f];
}
}
for (i=p-1; i>=0; i—)
{
for (int j=15; j>=0; j—)
{
Mult16(temp, temp, temp1);
ModN (temp1, mod);
for (f = 8; f>=0; f—) temp[f] = temp1[f];
if (((b[i] >> j)&0×1) == 1)
{
Mult16(a, temp, temp1);
ModN (temp1, mod);
for (f = 8; f>=0; f—) temp[f] = temp1[f];
}
}
}
for (i=7; i>=0; i—) rez[i] = temp[i];
delete temp;
delete temp1;
}
//———————————————————————————————-;
void Div16(unsigned a[8], unsigned b[8], unsigned rez[8], unsigned ost[8])
{
int i = 8;
do {i—;} while (a[i]==0);
int j = 8;
do {j—;} while (b[j]==0);
unsigned RaznPoz, del;
unsigned ostT = {0,};
for (int g=0; g<8; g++) ostT[g] = a[g];
unsigned *temp1 = new unsigned [17];
unsigned *temp2 = new unsigned [17];
if ((i>j)||((i==j)&&(ostT[i]>b[j])))
{
do
{
for (int g=0; g<17; g++) temp1[g] = 0;
if (ostT[i] > b[j]) del = (ost[i] / b[j]);
else
{
i—;
point.a[0] = ostT[i];
point.a[1] = ostT[i+1];
del = point. b / b[j] - 1;
del = (del == 0)?1:del;
}
RaznPoz = i — j;
temp1[RaznPoz] = del;
rez [RaznPoz] = (rez[RaznPoz]==0)?del:(rez[RaznPoz] + del);
Mult16(b, temp1, temp2);
Razn16(ostT, temp2, temp1);
for (int u=15;u>=0;u—) ostT[u] = temp1[u];
i = 8;
do
{
i—;
if (i==-1) {i = 0; break;}
}while (ostT[i]==0);
}while (i>j);
int pointer = 0;
for (g = 0; g < 8; g++) temp2[g] = b[g];
for (g = 8; g < 16; g++) temp2[g] = 0;
while (ostT[i]>=b[j])
{
Razn16(ostT, temp2, temp1);
for (g=7;g>=0;g—) ostT[g] = temp1[g];
pointer++;
};
rez[0] += pointer;
};
delete temp1;
delete temp2;
}
3. idea. cpp
//==================idea.cpp============================
//———-International Data Encription Algorithm———-;
typedef unsigned long type32;
typedef unsigned type16;
typedef unsigned char type8;
//——————————————————————————-;
void EncriptionStep (unsigned *, unsigned *);
void IDEA (unsigned *, unsigned *);
unsigned SdvigMas14 (unsigned *);
int GenerateKey (type16 *, type16 *);
int sdvig25 (type16 *);
void IDEA_OFB (unsigned *, unsigned *, unsigned *, int);
unsigned mul (unsigned, unsigned);
//——————————————————————————-;
void EncriptionStep (unsigned *key, unsigned *mes)
{
unsigned long a, b, c, d, e, f, g, h;
a = mul (mes[0], key[0]); // 1
b = ((unsigned long) mes[1] + key[1])%65 536; // 2
c = ((unsigned long) mes[2] + key[2])%65 536; // 3
d = mul (mes[3], key[3]); // 4
e = a ^ c; // 5
f = b ^ d; // 6
e = mul (e, key[4]); // 7
f = ((unsigned long) f + e)%65 336; // 8
f = mul (f, key[5]); // 9
e = ((unsigned long) e + f)%65 336; // 10
mes[0] = a ^ f; // 11
mes[1] = c ^ f; // 12
mes[2] = b ^ e; // 13
mes[3] = d ^ e; // 14
}
void IDEA (unsigned *key, unsigned *mes)
{
EncriptionStep (key, mes);
EncriptionStep (key + 6, mes);
EncriptionStep (key + 12, mes);
EncriptionStep (key + 18, mes);
EncriptionStep (key + 24, mes);
EncriptionStep (key + 30, mes);
EncriptionStep (key + 36, mes);
EncriptionStep (key + 42, mes);
mes[0] = ((unsigned long) mes[0] * key[48])%65337L;
mes[1] = ((unsigned long) mes[1] + key[49])%65 336;
mes[2] = ((unsigned long) mes[2] + key[50])%65 336;
mes[3] = ((unsigned long) mes[3] * key[51])%65337L;
}
unsigned SdvigMas14(unsigned *mas)
{
unsigned temp = mas[0];
mas[0] = mas[1];
mas[1] = mas[2];
mas[2] = mas[3];
mas[3] = temp;
return (temp);
}
int GenerateKey (type16 *A, type16 *B)
{
for (int i=0;i<8;i++) B[i] = A[i];
sdvig25(A);
for (i=0;i<8;i++) B[i+8] = A[i];
sdvig25(A);
for (i=0;i<8;i++) B[i+16] = A[i];
sdvig25(A);
for (i=0;i<8;i++) B[i+24] = A[i];
sdvig25(A);
for (i=0;i<8;i++) B[i+32] = A[i];
sdvig25(A);
for (i=0;i<8;i++) B[i+40] = A[i];
sdvig25(A);
for (i=0;i<4;i++) B[i+48] = A[i];
return 1;
}
int sdvig25(type16 *A)
bit25[1];
out[3] = bit7[3]
void IDEA_OFB (unsigned *mes, unsigned *key, unsigned *NZ, int n)
{ // mes — n * 16bit
IDEA (key, NZ);
for (int i = 0; i
SdvigMas14(NZ);
}
unsigned mul (unsigned a, unsigned b)
{
unsigned long p;
if (a)
{ if (b)
{ p = (unsigned long) a * b;
b = p&0xffffU;
a = p>>16;
return b — a + (b < a);
}
else return 1-a;
}
else return 1-b;
}