Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.87 KB | None | 0 0
  1. Zadanie polega na zaimplementowaniu pewnej metody szyfrowania.
  2. Załóżmy dla uproszczenia, że obsługujemy alfabet z ośmiu liter, od A do H.
  3. Litery alfabetu będą ponumerowane od 0 do 7.
  4. Z tak ponumerowanego alfabetu utworzymy 8 ciągów liter.
  5. Ciąg z indeksem zero to kolejne litery alfabetu począwszy od A, czyli A B C D E F G H.
  6. Ogólniej, ciąg z indeksem k to kolejne litery alfabetu zaczynając od tej z indeksem k,
  7. czyli dla k równego 4 będzie to E F G H A B C D.
  8. Poniżej przykład pełnej macierzy utworzonej z przesuniętych ciągów.
  9. idx = index
  10. off = offset (przesunięcie)
  11.  
  12. idx 0 0 0 0 0 0 0 0
  13. 0 1 2 3 4 5 6 7
  14. idx off ---------------
  15. 00 00 A B C D E F G H
  16. 01 01 B C D E F G H A
  17. 02 02 C D E F G H A B
  18. 03 03 D E F G H A B C
  19. 04 04 E F G H A B C D
  20. 05 05 F G H A B C D E
  21. 06 06 G H A B C D E F
  22. 07 07 H A B C D E F G
  23.  
  24. Zwróć uwagę, że indeksy liter w przypadku wierszy są jednocześnie przesunięciami.
  25. Dane wejściowe dla szyfrowania w takiej podstawowej wersji
  26. to tekst źródłowy oraz klucz również będący tekstem.
  27.  
  28. klucz: BE
  29. tekst: CECHA
  30. BEBEB (dopełnienie klucza)
  31.  
  32. Jeśli klucz jest krótszy niż tekst do zaszyfrowania powielamy go cyklicznie,
  33. tak aby długość powielonego klucza była taka sama jak szyfrowanego tekstu.
  34. Jeśli zastąpimy litery ich indeksami otrzymamy słowa złożone z indeksów.
  35.  
  36. klucz: 14
  37. tekst: 24270
  38. 14141 (dopełnienie klucza)
  39.  
  40. Szyfrowanie tekstu.
  41. Indeksów z tekstu używamy do wyboru kolumny, a indeksów z klucza do wyboru wiersza.
  42. Używając pary indeksów (C, B)=(2, 1) do odczytu z macierzy otrzymujemy literę D.
  43. Używając pary indeksów (H, E)=(7, 4) również otrzymujemy literę D.
  44.  
  45. Odszyfrowanie tekstu.
  46. Wykonujemy operacje odwrócenia klucza względem rozmiaru alfabetu,
  47. w naszym przykładzie znak odwróconego klucza o indeksie 'i' wyraża się formułą:
  48. keyrev[i] = (8 - key[i]) % 8,
  49. odszyfrowanie polega na wykonaniu operacji takich samych jak podczas szyfrowania,
  50. ale z użyciem odwróconego klucza.
  51.  
  52. szyfrogram: DADDB (szyfrogram to tekst w zaszyfrowanej postaci)
  53.  
  54. Szyfr, który należy zaimplementować będzie dodatkowo posiadał
  55. permutowanie wierszy w macierzy, czyli indeksy 0..7 będą mapowane na przesuniącia 0..7.
  56.  
  57. idx 0 0 0 0 0 0 0 0
  58. 0 1 2 3 4 5 6 7
  59. idx off ---------------
  60. 00 01 B C D E F G H A
  61. 01 02 C D E F G H A B
  62. 02 05 F G H A B C D E
  63. 03 04 E F G H A B C D
  64. 04 06 G H A B C D E F
  65. 05 03 D E F G H A B C
  66. 06 07 H A B C D E F G
  67. 07 00 A B C D E F G H
  68.  
  69. Przy tak skonstruowanej macierzy znaków nasz przykład szyfrowania wygląda jak poniżej.
  70. Permutacja wierszy wpływa na kodowanie indeksów klucza.
  71.  
  72. klucz: BE
  73. tekst: CECHA
  74. BEBEB (dopełnienie klucza)
  75.  
  76. klucz: 26 (permutacja (1->2) (4->6))
  77. tekst: 24270
  78. 26262 (dopełnienie klucza)
  79.  
  80. szyfrogram: ECEFC
  81.  
  82. Pełna metoda szyfrowania, którą należy zaimplementować
  83. musi działać na zestawie 64 znaków z zestawu ASCII,
  84. cyfr 0-9, wielkich liter A-Z oraz małych liter a-z, spacji i przecinka.
  85. Podane kategorie znaków nie tworzą ciągłego przedziału w kodzie ASCII,
  86. więc należy zmapować je do zakresu indeksów od 0 do 63.
  87. Należy przyjąć następujące indeksowanie:
  88. [1] cyfry pokrywają indeksy od 0 do 9
  89. [2] litery wielkie pokrywają indeksy od 10 do 35
  90. [2] litery małe pokrywą indeksy od 36 do 61
  91. [4] spacja to indeks 62
  92. [5] przecinek to indeks 63
  93.  
  94. format danych wejściowych
  95.  
  96. Dane wejściowe dla programu składają się z czterech wierszy (każdy zakończony znakiem '\n'):
  97. (1) operacja do wykonania (szyfrowanie lub odszyfrowanie, odpowiednio encrypt lub decrypt)
  98. (2) permutacja alfabetu (64 liczby z przedziału 0-63, oddzielone spacjami)
  99. (3) klucz tekstowy
  100. (4) tekst do zaszyfrowania/odszyfrowania
  101.  
  102. W liniach (3) i (4), maksymalna obsługiwana długość tekstu to 256 znaków.
  103.  
  104. Przykład danych 1: (transliteracja Не открывая замки, я буду вспоминать)
  105.  
  106. encrypt
  107. 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
  108. syberianka
  109. He OTKPbIBa9 3aMKN, 9 6yDy BCTTOMNHaTb
  110.  
  111. Wynik 1:
  112.  
  113. 7aZ0I0zM0lQ5ZhP2u8jY,wha2eYyw1JKx,6G1M
  114.  
  115. Przykład danych 2:
  116.  
  117. decrypt
  118. 1 0 3 2 5 4 7 6 9 8 11 10 13 12 15 14 17 16 19 18 21 20 23 22 25 24 27 26 29 28 31 30 33 32 35 34 37 36 39 38 41 40 43 42 45 44 47 46 49 48 51 50 53 52 55 54 57 56 59 58 61 60 63 62
  119. fr, en, ru
  120. xSymHkanaiTSlcVknZgucBchWRcqoWQoG d7y8oAGH
  121.  
  122. Wynik 2:
  123.  
  124. Je ne comprends pas, Neither do I, N 9 HeT
  125.  
  126. Przykład danych 3:
  127.  
  128. encrypt
  129. 1 0 3 2 5 4 7 6 9 8 11 10 13 12 15 14 17 16 19 18 21 20 23 22 25 24 27 26 29 28 31 30 33 32 35 34 37 36 39 38 41 40 43 42 45 44 47 46 49 48 51 50 53 52 55 54 57 56 59 58 61 60 63 62
  130. fr, en, ru
  131. Je ne comprends pas... Neither do I! N 9 HeT!
  132.  
  133. Wynik 3:
  134.  
  135. UNSUPPORTED_ALPHABET
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement