ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Алгоритм формирования ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² процСссС функционирования DES

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π°ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

K15: 111 001 111 101 001 092 243 074 060 157 634 973 361 267 277 824. K14: 111 001 001 101 010 998 059 482 094 711 931 670 654 892 376 064. K13: 111 000 011 011 011 000 939 049 842 415 079 330 264 872 124 416. K12: 111 100 011 011 111 006 933 689 321 523 306 216 537 517 457 408. K11: 111 100 001 010 111 018 488 754 359 724 041 485 134 021 525 504. K10… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Алгоритм формирования ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² процСссС функционирования DES (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠšΠ°Ρ„Π΅Π΄Ρ€Π°: АБОИиУ

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π°

«ΠΠ»Π³ΠΎΡ€ΠΈΡ‚ΠΌ формирования ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ функционирования DES»

ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅

«ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΡΡ€Π΅Π΄ΡΡ‚Π²Π° Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ»

Москва 2009 г.

  • ВСхничСскоС Π·Π°Π΄Π°Π½ΠΈΠ΅ 3
  • Алгоритм формирования ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ функционирования DES. 3
  • Π Π°Π±ΠΎΡ‚Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° 4
    • 1 шаг. ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠΈ Π±ΠΈΡ‚ΠΎΠ² ΠΊΠ»ΡŽΡ‡Π° с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ пСрСстановок. 5
      • 2 шаг. Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π°. 6
      • 3 шаг. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ 16-Ρ‚ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΏΡƒΡ‚Π΅ΠΌ сдвига. 7
      • 4 шаг. ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΡ‚ΠΎΠ² ΠΊΠ»ΡŽΡ‡Π° с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ PC1. 8
  • Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ 9
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 15

ВСхничСскоС Π·Π°Π΄Π°Π½ΠΈΠ΅

1. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ формирования ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ функционирования DES Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования C++.

2. ΠŸΡ€ΠΎΠ²Π΅ΡΡ‚ΠΈ тСст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Алгоритм формирования ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ функционирования DES

Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ — Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡƒΠ½Π΄ΠΎΠ²Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: ΠšΠ»ΡŽΡ‡ состоит ΠΈΠ· 8 символов ΠΈΠ»ΠΈ 8 Π±Π°ΠΉΡ‚. БоотвСтствСнно ΠΊΠ»ΡŽΡ‡ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 64 Π±Π°ΠΉΡ‚Π°. Но Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ»ΡŽΡ‡Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для записи (для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…). ЀактичСски, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ 8 Π±ΠΈΡ‚ отбрасываСтся ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ»ΡŽΡ‡Π° — 56 Π±ΠΈΡ‚.

Π Π°Π±ΠΎΡ‚Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

1 шаг. ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠΈ Π±ΠΈΡ‚ΠΎΠ² ΠΊΠ»ΡŽΡ‡Π° с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ пСрСстановок.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Π²Π΅Π΄Π΅ΠΌ:

olga1234

Π—Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ прСдставлСнии:

Π’ Π½Π°Ρ‡Π°Π»Π΅ Π½Π°Π΄ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΡˆΠΈΡ„Ρ€Π° выполняСтся опСрация B, которая сводится ΠΊ Π²Ρ‹Π±ΠΎΡ€Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π±ΠΈΡ‚ ΠΈ ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ΅, ΠΊΠ°ΠΊ это ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ строки ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π±ΠΈΡ‚Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ C (0) (ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π±ΠΈΡ‚ΠΎΠΌ C (0) Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΈΡ‚ 57 Π±ΠΈΡ‚ ΠΊΠ»ΡŽΡ‡Π° ΡˆΠΈΡ„Ρ€Π°, Π·Π°Ρ‚Π΅ΠΌ Π±ΠΈΡ‚ 49 ΠΈ Ρ‚. Π΄., Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌΠΈ Π±ΠΈΡ‚Π°ΠΌΠΈ Π±ΠΈΡ‚Ρ‹ 44 ΠΈ 36 ΠΊΠ»ΡŽΡ‡Π° ΡˆΠΈΡ„Ρ€Π°), Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ строки — ΠΊΠ°ΠΊ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π±ΠΈΡ‚Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ D (0) (Ρ‚.Π΅. ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ D (0) Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π±ΠΈΡ‚ΠΎΠ² 63,55,…, 12, 4 ΠΊΠ»ΡŽΡ‡Π° ΡˆΠΈΡ„Ρ€Π°).

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ пСрСстановки ΠΊΠ»ΡŽΡ‡ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

2 шаг. Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π°

На ΡΡ‚ΠΎΠΌ шагС осущСствляСтся Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° Π½Π° 2 ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ C0 ΠΈ D0. КаТдая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° содСрТит 28 Π±ΠΈΡ‚.

C0:

D0:

3 шаг. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ 16-Ρ‚ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΏΡƒΡ‚Π΅ΠΌ сдвига

ПослС опрСдСлСния C (0) ΠΈ D (0) рСкурсивно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ C (i) ΠΈ D (i), i=1,2,…, 16. Для этого ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига Π²Π»Π΅Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° Π±ΠΈΡ‚Π° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π° шага ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ это ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ «Π€ΡƒΠ½ΠΊΡ†ΠΈΡ сдвига Si». ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сдвига Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ C (i) ΠΈ D (i) нСзависимо. НапримСр, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ C (3) получаСтся, посрСдством сдвига Π²Π»Π΅Π²ΠΎ Π½Π° Π΄Π²Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ C (2), Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ D (3) — посрСдством сдвига Π²Π»Π΅Π²ΠΎ Π½Π° Π΄Π²Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ D (2). Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ выполняСтся цикличСский сдвиг Π²Π»Π΅Π²ΠΎ. НапримСр, Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΉ сдвиг Π²Π»Π΅Π²ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ C (i) ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π±ΠΈΡ‚ C (i) станСт послСдним ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΠΈΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ: 2,3,…, 28,1.

Π’Π°Π±Π»ΠΈΡ†Π° «Π€ΡƒΠ½ΠΊΡ†ΠΈΡ сдвига Si»

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ сдвига ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‹

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ сдвигов

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Ρ‹

C1: 1 111 111 111 111 110 958 252 032

D1: 1 011 101 011 001 011 018 768 842 752

C2: 11 111 111 111 111 110 924 697 600

D2: 111 010 110 010 110 003 273 269 248

C3: 1 111 111 111 111 111 049 520 087 040

D3: 1 101 011 001 010 999 988 292 943 872

C4: 1 111 111 111 111 100 054 403 809 280

D4: 101 100 101 100 001 112 874 811 392

C5: 1 111 111 111 109 999 993 020 219 392

D5: 110 010 110 000 110 999 986 765 824

C6: 1 111 111 111 000 000 039 414 136 832

D6: 1 001 011 000 011 100 071 959 461 888

C7: 1 111 111 100 000 000 005 881 462 784

D7: 101 100 001 110 011 003 971 567 616

C8: 1 111 110 000 000 000 088 587 894 784

D8: 110 000 111 001 101 106 094 800 896

C9: 1 111 100 000 000 001 165 320 257 536

D9: 1 100 001 110 011 011 164 027 224 064

C10: 1 110 000 000 000 111 084 665 044 992

D10: 111 001 101 110 101 099 413 504

C11: 1 000 000 000 011 111 128 042 045 440

D11: 11 100 110 111 010 109 270 261 760

C12: 1 111 111 111 111 111 040

D12: 1 110 011 011 101 010 961 385 914 368

C13: 111 111 111 111 111 098 368

D13: 1 001 101 110 101 100 037 079 564 288

C14: 11 111 111 111 111 109 246 976

D14: 110 111 010 110 010 110 142 054 400

C15: 1 111 111 111 111 110 958 252 032

D15: 1 011 101 011 001 011 018 768 842 752

C16: 11 111 111 111 111 110 924 697 600

D16: 111 010 110 010 110 003 273 269 248

4 шаг. ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΡ‚ΠΎΠ² ΠΊΠ»ΡŽΡ‡Π° с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ PC1

Π”ΠΎ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ пСрСстановки Π±ΠΈΡ‚ΠΎΠ² ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ слияниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° CnDn, Π³Π΄Π΅ 1<=n<=16 ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ пСрСстановка ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ (см Π½ΠΈΠΆΠ΅), формируя ΠΊΠ»ΡŽΡ‡ΠΈ. Волько 48 Π±ΠΈΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ объСдинСнной ΠΏΠ°Ρ€Ρ‹ сохраняСтся Π² ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅.

ВсС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈ:

K1: 111 001 111 101 001 092 243 074 060 157 634 973 361 267 277 824

K2: 111 001 101 101 001 107 721 237 540 316 952 537 235 177 078 784

K3: 101 011 111 101 001 117 515 036 501 726 181 191 184 008 871 936

K4: 1 111 100 101 001 111 071 266 220 861 411 838 578 514 722 816

K5: 1 111 100 101 100 110 938 648 569 921 509 201 795 832 872 960

K6: 111 110 110 100 111 011 766 109 170 246 261 414 270 337 024

K7: 111 100 110 110 110 010 880 971 150 177 903 362 975 989 760

K8: 10 111 100 010 110 110 009 909 817 545 550 520 596 475 936 768

K9: 10 110 111 010 110 109 478 352 929 600 940 579 708 683 157 504

K10: 110 110 001 010 110 006 507 254 065 878 814 590 007 093 755 904

K11: 111 100 001 010 111 018 488 754 359 724 041 485 134 021 525 504

K12: 111 100 011 011 111 006 933 689 321 523 306 216 537 517 457 408

K13: 111 000 011 011 011 000 939 049 842 415 079 330 264 872 124 416

K14: 111 001 001 101 010 998 059 482 094 711 931 670 654 892 376 064

K15: 111 001 111 101 001 092 243 074 060 157 634 973 361 267 277 824

K16: 111 001 101 101 001 107 721 237 540 316 952 537 235 177 078 784

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

#include

#include

#include

#include

int main (int argc, char *argv[]) {

int

i, b, y, r, j, v, p, m, l, f, u, k, a, s, q, D[100] [100], Y[100] [100], U[100] [100], X[1000] [1000], E[100] [100], G[100] [100], W[100] [100], P[100] [1 $

double z;

int key[16]={1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1};

char A[1000];

char B[200];

char N[200];

char T[200];

char C[1000];

char Z[43];

char R[43];

char L[43];

char *str2;

char *str;

char *str1;

char *str3;

char *str4;

char *str5;

char d[100];

printf («nVvedite keyn»);

str=(char *) (malloc (1000));

for (i=0; i<1000; i++) {

scanf («%c»,&str[i]);

if (str[i]==(char) 10) {

m=i;

break;

}

if (str[i]==(char) 32) {

str[i]=157;}

}

if (m≠8) {

printf («nKey neverenn»);

}

for (i=0; i

A[i]=str[i]; }

for (i=0; i

B[i]=(int) A[i];

printf («%dn», B[i]);

}

for (i=0; i

f=B[i];

for (j=0; j<8; j++) {

if (f<1) {

X[j] [i]=0;

goto Metka;}

s=f/2;

/*printf («%d», s);*/

z=fmod (f, 2);

if (z≠0)

X[j] [i]=1;

else

X[j] [i]=0;

f=s;

Metka:printf («%d», X[j] [i]);}

printf («n»);

}

printf («n»);

k=0;

for (i=0; i

k=i*8;

for (j=0; j<8; j++) {

N [j+k]=X [8-j-1] [i];

}

}

for (i=0; i<64; i++) {

printf («%d», N[i]);}

printf («n»);

C[0]=N[57]; C[1]=N[49]; C[2]=N[41]; C[3]=N[33]; C[4]=N[25]; C[5]=N[17]; C[6]=N[9]; C[7]=N[1];

C[8]=N[58]; C[9]=N[50]; C[10]=N[42]; C[11]=N[34]; C[12]=N[26]; C[13]=N[18]; C[14]=N[10];

C[15]=N[2]; C[16]=N[59]; C[17]=N[51]; C[18]=N[43]; C[19]=N[35]; C[20]=N[27]; C[21]=N[19];

C[22]=N[11]; C[23]=N[3]; C[24]=N[60]; C[25]=N[52]; C[26]=N[44]; C[27]=N[36]; C[28]=N[63];

C[29]=N[55]; C[30]=N[47]; C[31]=N[39]; C[32]=N[31]; C[33]=N[23]; C[34]=N[15]; C[35]=N[7];

C[36]=N[62]; C[37]=N[54]; C[38]=N[46]; C[39]=N[38]; C[40]=N[30]; C[41]=N[22]; C[42]=N[14];

C[43]=N[6]; C[44]=N[61]; C[45]=N[53]; C[46]=N[45]; C[47]=N[37]; C[48]=N[29]; C[49]=N[21];

C[50]=N[13]; C[51]=N[5]; C[52]=N[28]; C[53]=N[20]; C[54]=N[12]; C[55]=N[4];

for (i=0; i<56; i++) {

printf («%d», C[i]);

}

for (i=0; i<56; i++) {

if (i<28) {

Z[i]=C[i]; }

if (i>27) {

R [i-28]=C[i]; }

}

printf («n»);

for (i=0; i<28; i++) {

printf («%d», Z[i]);}

printf («n»);

for (i=0; i<28; i++) {

printf («%d», R[i]);}

printf («n»);

printf («n»);

for (j=0; j<16; j++) {

v=key[j];

for (i=0; i<28; i++) {

if (v==2) {

Y[26] [j]=Z[0];

Y[27] [j]=Z[1];

U[26] [j]=R[0];

U[27] [j]=R[1];

}

if (v==1) {

Y[27] [j]=Z[1];

U[27] [j]=R[1];

}

if (i<(28-v)) {

Y[i] [j]=Z [i+v];

U[i] [j]=R [i+v]; }

Z[i]=Y[i] [j];

R[i]=U[i] [j];

/*printf («%d», U[i] [j]);*/

}

/*printf («n»);*/

}

for (j=0; j<16; j++) {

for (i=0; i<56; i++) {

if (i<28) {

W[i] [j]=Y[i] [j]; }

if (i>27) {

W[i] [j]=U [i-28] [j]; }

printf («%d», W[i] [j]);

}

printf («n»);

}

for (j=0; j<16; j++) {

P[0] [j]=W[14] [j]; P[1] [j]=W[17] [j]; P[2] [j]=W[11] [j]; P[3] [j]=W[24] [j]; P[4] [j]=W[1] [j]; P[5] [j]=W[5] [j];

P[6] [j]=W[3] [j]; P[7] [j]=W[28] [j]; P[8] [j]=W[15] [j]; P[9] [j]=W[6] [j]; P[10] [j]=W[21] [j]; P[11] [j]=W[10] [j];

P[12] [j]=W[23] [j]; P[13] [j]=W[19] [j]; P[14] [j]=W[12] [j]; P[15] [j]=W[4] [j]; P[16] [j]=W[26] [j]; P[17] [j]=W[8] [j];

P[18] [j]=W[16] [j]; P[19] [j]=W[7] [j]; P[20] [j]=W[27] [j]; P[21] [j]=W[20] [j]; P[22] [j]=W[13] [j]; P[23] [j]=W[2] [j];

P[24] [j]=W[41] [j]; P[25] [j]=W[52] [j]; P[26] [j]=W[31] [j]; P[27] [j]=W[37] [j]; P[28] [j]=W[47] [j]; P[29] [j]=W[55] [j];

P[30] [j]=W[30] [j]; P[31] [j]=W[40] [j]; P[32] [j]=W[51] [j]; P[33] [j]=W[45] [j]; P[34] [j]=W[33] [j]; P[35] [j]=W[48] [j];

P[36] [j]=W[44] [j]; P[37] [j]=W[49] [j]; P[38] [j]=W[39] [j]; P[39] [j]=W[56] [j]; P[40] [j]=W[34] [j]; P[41] [j]=W[53] [j];

P[42] [j]=W[46] [j]; P[43] [j]=W[42] [j]; P[44] [j]=W[50] [j]; P[45] [j]=W[36] [j]; P[46] [j]=W[29] [j]; P[47] [j]=W[32] [j];

}

for (j=0; j<16; j++) {

for (i=0; i<48; i++) {

printf («%d», P[i] [j]);

}

printf («n»);

}

}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ