Archiwa kategorii: uczelnia

Szyfrowanie XOR One Time Pad

Id?? szyfrowania one time pad jest to, ??e do ka??dej wiadomo??ci generujemy jednorazowy klucz d??ugo??ci tej wiadomo??ci. Jest to spos??b na szyfrowanie bardzo bezpieczne kr??tkich wiadomo??ci.

Jedynym mankamentem samej metody jest fakt ??e przed przes??aniem zaszyfrowanej wiadomo??ci musimy przes??a? r??wnie?? klucz.

Implementacja

#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
void print_string(char string[], int len) {
int i=0;
while(i<len){
 cout<<string[i];
 i++;
}
}
int main(int argc, char *){
char key[20], msg[50], crypt[50], decrypt[50];
cout<<"podaj dlugosc klucza(0 to dl. wiadomosci): ";
int key_len;
cin>>key_len;
cout<<"podaj wiadomosc: ";
cin>>msg;
if(key_len==0) {
 key_len=strlen(msg);
}
int msg_len = strlen(msg);
srand((unsigned)time(0));
for(int i=0; i<key_len; i++){
 key[i]=(char)(rand()%256);
}
cout<<"\n\n\nklucz: ";
print_string(key, key_len);
cout<<"\tdlugosc klucza: "<<strlen(key)-1<<"\tdlugosc wiadomosci: "<<strlen(msg)<<endl;
int i=0;
while(i<msg_len){
 int cur_key_char=0;
 if(i>strlen(key))
  cur_key_char = i % key_len ;
 crypt[i] = msg[i]^ key[cur_key_char];
 i++;
}
cout<<"\n\ncrypted:\n";
print_string(crypt, msg_len);
print_string(decrypt, msg_len);
int crypt_len = strlen(crypt);
cout<<"\n\nshould be:\n";
print_string(msg, msg_len);
i=0;
while(i<msg_len){
 int cur_key_char=0;
 if(i>strlen(key))
  cur_key_char = i % key_len ;
 decrypt[i] = crypt[i] ^ key[cur_key_char];
 i++;
}
cout<<"\n\ndecrypted:\n";
print_string(decrypt, msg_len);
cout<<"\n\n\n\n";
system("PAUSE");
return EXIT_SUCCESS;
}

Do pobrania r??wnie?? wersja skompilowana plus ??r??d??o: Onetimepad XOR

session phase two

Drugi egzamin 4.0 In??ynieria Oprogramowania. Wiele godzin m?czenia si? z UML’em. Dziesi?tki diagram??w. Kupa dokumentacji. Diagram klas. Opisanie wszystkiego po angielsku w SRS’ie. Wygenerowanie kodu. Postawienie SVN. Wygenerowanie dokumentacji za pomoc? javadoc’a. Op??aci??o si? zwolniony z egzaminu. Teraz tylko walka z Kryptografi?, Sieciami komputerowymi zosta??a i na deser prezentacja naszego projektu dyplomowego (pierwszej cz???ci czyli co ju?? zrobili??my i dlaczego nie dzia??a :) ). 2, 9 i 15 lutego. Du??o pracy jeszcze pozosta??o, Ale ju?? prawie na p????metku.