Witm koledzy, mam pytanie na ile skuteczny jest mój algorytm szyfrowania:
string czytaj(fstream* plik)
{
string łańcuch;
char znak;
while(true)
{
plik->get(znak);
if(plik->eof())
{
break;
}
else
{
łańcuch+=znak;
}
}
return łańcuch;
}
string szyfruj_hasło(size_t długość, string hasło)
{
while(długość > hasło.size())
{
hasło+=hasło;
}
for(size_t i=0;i<hasło.size();i++)
{
hasło[i]+=i;
}
for(size_t i=0;i<hasło.size();i+=2)
{
char znak=hasło[i];
hasło[i]=hasło[i+1];
hasło[i+1]=znak;
}
return hasło;
}
string szyfruj(string tekst, string hasło)
{
for(size_t i=0;i<tekst.size();i++)
{
tekst[i]=tekst[i]+hasło[i];
}
for(size_t i=0;i<tekst.size();i+=2)
{
char znak=tekst[i];
tekst[i]=tekst[i+1];
tekst[i+1]=znak;
}
return tekst;
}
string deszyfruj(string tekst, string hasło)
{
for(size_t i=0;i<tekst.size();i+=2)
{
char znak=tekst[i];
tekst[i]=tekst[i+1];
tekst[i+1]=znak;
}
for(size_t i=0;i<tekst.size();i++)
{
tekst[i]=tekst[i]-hasło[i];
}
return tekst;
}
void rysuj(int max)
{
for(int i=0;i<max;i++)
{
cout<<" ";
}
}
void menu()
{
int akapit=2;
cout<<endl;
rysuj(akapit+32);
cout<<" Coder 2012 ";
cout<<endl;
rysuj(akapit);
cout<<" Autor: Adam Brzozowski ";
cout<<endl;
rysuj(akapit);
cout<<" 1) Zakoduj plik ";
cout<<endl;
rysuj(akapit);
cout<<" 2) Dekoduj do pliku ";
cout<<endl;
rysuj(akapit);
cout<<" 3) Wyświetl zawartość zakodowanego pliku ";
cout<<endl;
rysuj(akapit);
cout<<" 4) Wyjdź z programu ";
cout<<endl;
rysuj(akapit+1);
}
int main()
{
locale myloc ("Polish");
locale oldloc = locale::global (myloc);
system("cls");
menu();
int akcja=0;
cin>>akcja;
switch(akcja)
{
default:
{
main();
}
break;
case 1:
{
plik_zakoduj();
}
break;
case 2:
{
plik_dekoduj();
}
break;
case 3:
{
tekst_dekoduj();
}
break;
case 4:
{
return 0;
}
break;
}
}
void tekst_dekoduj()
{
string nazwa, hasło, tekst_tajny, tekst_jawny;
fstream plik_tajny;
system("cls");
cout<<"Podaj nazwę pliku do tajnego."<<endl;
cout<<"Plik musi znajdować się w katalogu z aplikacją."<<endl;
cin>>nazwa;
plik_tajny.open(nazwa, ios::in);
if(plik_tajny.is_open())
{
cout<<"Podaj hasło zabezpieczające."<<endl;
cin>>hasło;
tekst_tajny=czytaj(&plik_tajny);
hasło=szyfruj_hasło(tekst_tajny.size(), hasło);
tekst_jawny=deszyfruj(tekst_tajny, hasło);
system("cls");
cout<<tekst_jawny;
_getch();
}
else
{
cout<<"Nie udało się otworzyć pliku."<<endl;
cout<<"Sprawdź nazwę i rozszerzenie."<<endl;
cout<<"Aby kontynuować wybierz enter."<<endl;
_getch();
tekst_dekoduj();
}
plik_tajny.close();
main();
}
void plik_dekoduj()
{
string nazwa, hasło, tekst_tajny, tekst_jawny;
fstream plik_jawny, plik_tajny;
system("cls");
cout<<"Podaj nazwę pliku do tajnego."<<endl;
cout<<"Plik musi znajdować się w katalogu z aplikacją."<<endl;
cin>>nazwa;
plik_tajny.open(nazwa, ios::in);
if(plik_tajny.is_open())
{
cout<<"Podaj nazwę pliku jawnego."<<endl;
cin>>nazwa;
plik_jawny.open(nazwa, ios::out);
if(plik_jawny.is_open())
{
cout<<"Podaj hasło zabezpieczające."<<endl;
cin>>hasło;
tekst_tajny=czytaj(&plik_tajny);
hasło=szyfruj_hasło(tekst_tajny.size(), hasło);
tekst_jawny=deszyfruj(tekst_tajny, hasło);
plik_jawny<<tekst_jawny;
}
else
{
cout<<"Nie udało się utworzyć jawnego pliku"<<endl;
cout<<"Aby kontynuować wybierz enter."<<endl;
_getch();
}
}
else
{
cout<<"Nie udało się otworzyć pliku."<<endl;
cout<<"Sprawdź nazwę i rozszerzenie."<<endl;
cout<<"Aby kontynuować wybierz enter."<<endl;
_getch();
plik_dekoduj();
}
plik_jawny.close();
plik_tajny.close();
main();
}
void plik_zakoduj()
{
string nazwa, hasło, tekst_jawny, tekst_tajny;
fstream plik_jawny, plik_tajny;
system("cls");
cout<<"Podaj nazwę pliku do jawnego."<<endl;
cout<<"Plik musi znajdować się w katalogu z aplikacją."<<endl;
cin>>nazwa;
plik_jawny.open(nazwa, ios::in);
if(plik_jawny.is_open())
{
cout<<"Podaj nazwę pliku tajnego."<<endl;
cin>>nazwa;
plik_tajny.open(nazwa, ios::out);
if(plik_tajny.is_open())
{
cout<<"Podaj hasło zabezpieczające."<<endl;
cin>>hasło;
tekst_jawny=czytaj(&plik_jawny);
hasło=szyfruj_hasło(tekst_jawny.size(), hasło);
tekst_tajny=szyfruj(tekst_jawny, hasło);
plik_tajny<<tekst_tajny;
}
else
{
cout<<"Nie udało się utworzyć zakodowanego pliku"<<endl;
cout<<"Aby kontynuować wybierz enter."<<endl;
_getch();
}
}
else
{
cout<<"Nie udało się otworzyć pliku."<<endl;
cout<<"Sprawdź nazwę i rozszerzenie."<<endl;
cout<<"Aby kontynuować wybierz enter."<<endl;
_getch();
plik_zakoduj();
}
plik_jawny.close();
plik_tajny.close();
main();
}