Skip to content

pjazdzewski1990/Wstep_do_Kryptografii

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
 

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages