Documente Academic
Documente Profesional
Documente Cultură
RAPORT
Lucrare de laborator Nr.1
la disciplina Metode Criptografice de Protecie a Informaiei
Tema: Dezvoltarea unui algoritm de criptare simetrica
Chiinu 2016
Scopul lucrrii: Elaborarea unui algoritm de criptare simetrica
Sarcina lucrrii:
Implementarea unui program de criptare/decriptare folosind aceeasi cheie.
Mersul lucrrii:
Tehnica de criptare Vigenere este o tehnic polialfabetic, n sensul c, prin criptare, dou sau mai
multe caractere diferite ale textului iniial pot fi codificate folosind acelasi caracter n textul
criptat. Pentru a cripta un text folosind aceast metod se alege mai nti un alfabet, astfel nct toate
caracterele coninute n textul iniial s se afle printre caracterele alfabetului si apoi o parol format
din caractere ale alfabetului. Nu este necesar ca alfabetul ales s conin numai caracterele textului
iniial.
Funciile fi de substituie se definesc astfel:
(a) = (a+ )(mod n) unde n este lungimea alfabetului, este litera cheii k= 1 2 , iar a este
litera din mesajul clar.
n figura 1 este reprezentat rezultatul cifrrii unui text clar utiliznd algortimul Vigenere:
if(result == -1){
throw new IOException("Not character '"+character+"' for text in alphabet.");
}
return result;
}
if(result == -1){
throw new IOException("Not character '"+character+"' for key in alphabet.");
}
return result;
}
int inverseModule;
char[] Mi = new char[cipherTextSize];
int Ci, Kj; /* for i = position from char in plainText and j = i mod passphrase length
*/
for(int i = 0; i < cipherTextSize; i++)
{
Mi[i] = this.alphabetM.charAt(inverseModule);
}
Encrypter.java:
Aceast clas se refer la execuia criptrii textului clar. Aici se indic alfabetul initial utilizat n criptare.
String result;
// Alfabetul initial
String defaultM = "abcdefghijklmnopqrstuvwxyz ";
}else{
throw new IllegalArgumentException("Not a valid argument: "+args[0]);
}
}
}
BruteForce.java
n aceast clas sunt implementai paii de bruteforcing pentru determinarea textului clar.
Metoda checkPossibleKey() genereaz toate cuvintele posibile formate la descifrarea textului cu
cheia generat de metoda permutation()
private static ArrayList<Object> ckeckPossibleKey(String key) {
VigenereAlgorithm vigenere = new VigenereAlgorithm(defaultM);
if (result.contains(" ")) {
parts = result.split(" ");
int i = 0;
while (i < parts.length) {
possibleResults.add(parts[i]);
i++;
}
}
// System.out.println("Possible results" + possibleResults);
return possibleResults;
}
Metoda permutation() genereaz toate cheile posibile, care sunt utilizate ca argumentul metodei
checkPossibleKey(String key). n metoda permutation() de asemenea se determin identicitatea
cuvintelor obinute cu cele din dicionar, astfel gsindu-se mesajul clar.
Concluzie:
n lucrarea data am folosit principiul criptrii simetrice.Mi-am fcut cunotin cu
implementarea cifrului polialfabetic Vigenere. Am analizat metode de determinare a
textului clar dintr-un text cifrat (n cazul n care nu cunoatem cheia) , i anume brute-
forceing-ul.