pjazdzewski1990/Wstep_do_Kryptografii
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
Patryk Jażdżewski 186507, Informatyka Podstawy kryptografii, grupa 1 TECHNOLOGIA: Java, Java 1.7.0_2 Oracle PLATFORAM: Windows 7 64-bit IDE: NetBeans 7.1 UWAGI: Program stworzono z myślą o przyrostowym rozwijaniu i wzbogacaniu o kolejne algorytmy. Sterowanie programem odbywa się w całości linii poleceń. Program uruchamiamy np. java -jar Krypto.jar c e a=1 b=2. Założono, że program będzie umiejętnie obsługiwany. W przypadku braku argumentów przekazanych z linii poleceń program skorzysta z domyślnych wartości. Polecenia podajemy jako pojedyncze małe litery, bez myślnika np. d oznacza dekodowanie. Argumenty podajemy w formie nazwa=wartość np. a=2. W przypadku większej ilości poleceń lub argumentów odnoszących się do tego samego pod uwagę brany jest jedynie ostatni. Jeśli argumenty podane do szyfru afinicznego(a,b) są niepoprawne użytkownik zostanie o tym poinformowany, ale program bedzie kontynuuował operację. Program wykorzystuje wątki do pisania treści plików, więc zdarzyć się może, że główny program zakończy się przed wykonaniem się wątku. Przed otworzeniem pliku należy poczekać na stosowny komunikat. Szyfr korzysta z pierwszych 127 znaków kodu ASCII, co może skutkować nietypowymi znakami w zaszyfrowanym pliku. Program czyta pliki .txt - nie testowano na innych. Kryptoanliza z plikiem zaklada, że podany zostanie plik zawierający kilka początkowych liter z pliki źródłowego (przed jego zakodowaniem). Program dopisuje, nie zastępuje, treść do plików. ARGUMENTY: nazwa wartość domyślna znaczenie a= 2 przesunięcie kodu afinicznego, tj. ax+b b= 1 przesunięcie kodu afinicznego i Cezara timesDes 8 ile rund ma wykonać algorytm mini DES debug nie czy logować fazy działania algorytmu c tak kod Cezara a nie kod afiniczny v nie szyfr Vinegere'a x nie mini DES i nie imageDES (na podstawie miniDES'a) - kodowanie w ECB lub CBC e tak szyfrowanie d nie odszyfrowywanie j nie kryptoanaliza z tekstem jawnym k nie kryptoanaliza baz tekstu jawnego plainFile plain.txt plik do szyfrowania cryptoFile crypto.txt plik z zaszyfrowaną treścią decryptFile decrypt.txt plik to od szyfrowaniu keyFile key.txt plik z kluczem extraFile extra.txt plik stosowany przy kryptoanalizie analyzeFile analyze.txt w pliku znajdą się informacje o krokach wykonywanych przez dany algorytm blockMode ECB tryb szyfru blokowego(nie każdy szyfr wspiera każdy tryb) Zadanie 1 Zrealizowano wszystkie podpunkty. Na razie program nie obsługuje pliku z kluczem (będzie to porawione w następnych wersjach). Przykłady: szyfrujemy szyfrem cezara z przesunięciem równym 2 java -jar Krypto.jar c e b=2 deszyfrujemy kod afiniczny z a=1 b=2 java -jar Krypto.jar a d a=1 b=2 Zadanie 2 Program potrafi bezbłędnie zaszyfrować i rozszyfrować dowolny tekst. W przypadku kryptoanalizy dla bardziej skomplikowanych tekstów program "gubi się" i poprawnie tłumaczy tylko fragmenty tekstu. Zadanie 3 Wykonano wszystkie 3 podzadania. By uruchomić używamy: java -jar Krypto.jar d x debug=true timesDES=8 Jeśli chcemy otrzymać analizę poszczegolnych kroków algorytmu musimy podać opcję "debug=true". Wyrazy tekstu do przeksztalcenia (w jedną czy drugą stronę) muszą być oddzielone spacjami- domyslnie tekst wynikowy szyfrowania oddzielony jest znakami nowej linii. Zadanie 4 Wszystkie podpunkty zadania zrealizowane. Program jako dane dane wejściowe przyjmuje pliki .jpg nie .bmp Pliki wejściowe powinny być w rozmiarze 400x300(wielkorotność). Uruchamiamy w nastepujący sposób: java -jar Krypto.jar e i debug=true timesDES=8 plainFile=plain.jpg blockMode=CBC cryptoFile=crypto.jpg