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

Tags: , ,

niedziela, Marzec 2nd, 2008 c++, kryptografia, uczelnia Brak komentarzy

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.

poniedziałek, Styczeń 21st, 2008 uczelnia Brak komentarzy

session…

Starcie pierwsze. 5 z egzaminu. Za obecność. Tak na rozgrzewkę wykład Humanizujący. Teraz została tylko kryptografia, inżynieria oprogramowania i sieci. Praca nauka i projekty. No na nadmiar czasu na pewno narzekać nie będę.

Teraz w produkcji:

wtorek, Styczeń 15th, 2008 czas wolny, uczelnia Brak komentarzy
 

Enter your email address to subscribe to this blog and receive notifications of new posts by email.