Znasz już oryginalną wersję szyfru Vigenère'a – dotyczy ona określonych zasad przy tworzeniu klucza szyfrującego. Na podstawie przedstawionego kodu napisz funkcję, która przyjmie jeden parametr – łańcuch znaków do zaszyfrowania, a następnie utworzy odpowiedni klucz (pierwszy znak klucza ma być równy „J”) i go zwróci. Przetestuj działanie programu dla łańcucha znaków do zaszyfrowania tajnytekst.
Specyfikacja problemu:
Dane:
doZaszyfrowania – łańcuch znaków
Wynik:
klucz – łańcuch znaków
RrN5QG9zYewcB
Przykładowe rozwiązanie zadania:
Linia 1. public class OrygianlnySzyfrVigenere otwórz nawias klamrowy.
Linia 2. static String utworzKlucz otwórz nawias okrągły String doZaszyfrowania zamknij nawias okrągły otwórz nawias klamrowy.
Linia 3. String klucz znak równości cudzysłów cudzysłów średnik.
Linia 4. klucz plus znak równości cudzysłów j cudzysłów średnik.
Linia 6. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny doZaszyfrowania kropka length otwórz nawias okrągły zamknij nawias okrągły minus 1 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. klucz plus znak równości doZaszyfrowania kropka charAt otwórz nawias okrągły i zamknij nawias okrągły średnik.
Linia 8. zamknij nawias klamrowy.
Linia 10. return klucz średnik.
Linia 11. zamknij nawias klamrowy.
Linia 13. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy.
Linia 14. System kropka out kropka println otwórz nawias okrągły utworzKlucz otwórz nawias okrągły cudzysłów tajnytekst cudzysłów zamknij nawias okrągły zamknij nawias okrągły średnik.
Linia 15. zamknij nawias klamrowy.
Linia 16. zamknij nawias klamrowy.
31
Ćwiczenie 2
W tym zadaniu musimy rozszerzyć program z Ćwiczenia 1 o generowanie tablicy szyfrującej oraz wykonanie szyfrowania. Klucz ma być tworzony tak, jak w poprzednim zadaniu (według oryginalnej wersji szyfru Vigenère'a).
Specyfikacja problemu:
Dane:
doZaszyfrowania – łańcuch znaków
klucz – łańcuch znaków
Wynik:
Program wyświetla utworzoną tablicę szyfrującą, a w nowej linii wynik szyfrowania.
R15TgunN72zuu
Przykładowe rozwiązanie zadania:
Linia 1. public class OrygianlnySzyfrVigenere otwórz nawias klamrowy.
Linia 3. static char otwórz nawias kwadratowy zamknij nawias kwadratowy alfabetLacinski znak równości new char otwórz nawias kwadratowy 26 zamknij nawias kwadratowy średnik.
Linia 4. static char otwórz nawias kwadratowy zamknij nawias kwadratowy otwórz nawias kwadratowy zamknij nawias kwadratowy tabela znak równości new char otwórz nawias kwadratowy 26 zamknij nawias kwadratowy otwórz nawias kwadratowy 26 zamknij nawias kwadratowy średnik.
Linia 6. static void wypelnienieTablicy otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 8. for otwórz nawias okrągły int i znak równości 97 przecinek z znak równości 0 średnik i otwórz nawias ostrokątny 123 średnik i plus plus przecinek z plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 9. alfabetLacinski otwórz nawias kwadratowy z zamknij nawias kwadratowy znak równości otwórz nawias okrągły char zamknij nawias okrągły i średnik.
Linia 10. zamknij nawias klamrowy.
Linia 12. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny 26 średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 13. for otwórz nawias okrągły int k znak równości 0 średnik k otwórz nawias ostrokątny 26 średnik k plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 14. tabela otwórz nawias kwadratowy j zamknij nawias kwadratowy otwórz nawias kwadratowy k zamknij nawias kwadratowy znak równości alfabetLacinski otwórz nawias kwadratowy k zamknij nawias kwadratowy średnik.
Linia 15. zamknij nawias klamrowy.
Linia 17. for otwórz nawias okrągły int l znak równości 0 średnik l otwórz nawias ostrokątny 26 minus 1 średnik l plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 18. char temp znak równości alfabetLacinski otwórz nawias kwadratowy l zamknij nawias kwadratowy średnik.
Linia 19. alfabetLacinski otwórz nawias kwadratowy l zamknij nawias kwadratowy znak równości alfabetLacinski otwórz nawias kwadratowy l plus 1 zamknij nawias kwadratowy średnik.
Linia 20. alfabetLacinski otwórz nawias kwadratowy l plus 1 zamknij nawias kwadratowy znak równości temp średnik.
Linia 21. zamknij nawias klamrowy.
Linia 22. zamknij nawias klamrowy.
Linia 24. for otwórz nawias okrągły int m znak równości 0 średnik m otwórz nawias ostrokątny 26 średnik m plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 25. for otwórz nawias okrągły int n znak równości 0 średnik n otwórz nawias ostrokątny 26 średnik n plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 26. System kropka out kropka print otwórz nawias okrągły tabela otwórz nawias kwadratowy m zamknij nawias kwadratowy otwórz nawias kwadratowy n zamknij nawias kwadratowy zamknij nawias okrągły średnik.
Linia 27. zamknij nawias klamrowy.
Linia 28. System kropka out kropka println otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 29. zamknij nawias klamrowy.
Linia 31. zamknij nawias klamrowy.
Linia 33. static String utworzKlucz otwórz nawias okrągły String doZaszyfrowania zamknij nawias okrągły otwórz nawias klamrowy.
Linia 34. String klucz znak równości cudzysłów cudzysłów średnik.
Linia 35. klucz plus znak równości cudzysłów j cudzysłów średnik.
Linia 37. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny doZaszyfrowania kropka length otwórz nawias okrągły zamknij nawias okrągły minus 1 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 38. klucz plus znak równości doZaszyfrowania kropka charAt otwórz nawias okrągły i zamknij nawias okrągły średnik.
Linia 39. zamknij nawias klamrowy.
Linia 41. return klucz średnik.
Linia 42. zamknij nawias klamrowy.
Linia 44. static String zaszyfruj otwórz nawias okrągły String doZaszyfrowania zamknij nawias okrągły otwórz nawias klamrowy.
Linia 45. String wynikSzyfrowania znak równości cudzysłów cudzysłów średnik.
Linia 47. String klucz znak równości utworzKlucz otwórz nawias okrągły doZaszyfrowania zamknij nawias okrągły średnik.
Linia 49. for otwórz nawias okrągły int i znak równości 0 przecinek j znak równości 0 średnik i otwórz nawias ostrokątny doZaszyfrowania kropka length otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 50. wynikSzyfrowania plus znak równości tabela otwórz nawias kwadratowy otwórz nawias okrągły int zamknij nawias okrągły otwórz nawias okrągły doZaszyfrowania kropka charAt otwórz nawias okrągły i zamknij nawias okrągły minus 97 zamknij nawias okrągły zamknij nawias kwadratowy otwórz nawias kwadratowy otwórz nawias okrągły int zamknij nawias okrągły otwórz nawias okrągły klucz kropka charAt otwórz nawias okrągły j zamknij nawias okrągły minus 97 zamknij nawias okrągły zamknij nawias kwadratowy średnik.
Linia 52. if otwórz nawias okrągły j znak równości znak równości klucz kropka length otwórz nawias okrągły zamknij nawias okrągły minus 1 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 53. j znak równości 0 średnik.
Linia 54. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 55. j plus plus średnik.
Linia 56. zamknij nawias klamrowy.
Linia 57. zamknij nawias klamrowy.
Linia 59. return wynikSzyfrowania średnik.
Linia 60. zamknij nawias klamrowy.
Linia 62. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy.
Linia 63. wypelnienieTablicy otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 64. System kropka out kropka println otwórz nawias okrągły zaszyfruj otwórz nawias okrągły cudzysłów tajnytekst cudzysłów zamknij nawias okrągły zamknij nawias okrągły średnik.
Linia 65. zamknij nawias klamrowy.
Linia 66. zamknij nawias klamrowy.