Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Kryptografia_2_Projekt.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <time.h>
- using namespace std;
- string SzyfrujMacierz(string f_tekstjawny);
- void UtworzMacierz(char *, int );
- int WymiarTablicy(int f_wymiar);
- string StringToUpper(string strToConvert);
- string StringToLower(string strToConvert);
- string szyfrujCezar(int klucz, string f_tekst, char*);
- char* szyfrujSpacje(int);
- int _tmain(int argc, _TCHAR* argv[])
- {
- srand(time(NULL));
- string TekstJawny;
- string Sekret;
- int Klucz = rand() % 65;
- cout <<endl<<endl<< " //////////////////////////// Szyfrator ///////////////////////////" << endl << endl<<endl<<endl;
- cout << "Wpisz tekst w celu zaszyfrowania go: " << endl<<endl;
- getline(cin,TekstJawny);
- Sekret = SzyfrujMacierz(TekstJawny);
- size_t n = count(Sekret.begin(), Sekret.end(), ' ');
- char *Spacje = new char[n];
- Spacje=szyfrujSpacje(n);
- cout <<endl<< "Tekst po szyfrowaniu Macierz(Kwadrat): " << Sekret << endl<<endl;
- Sekret = szyfrujCezar(Klucz, Sekret,Spacje);
- cout << "Tekst po szyfrowaniu Cezar: " << Sekret << endl<<endl;aA
- //system("pause");
- //system("cls");
- cout <<endl<<endl<< " //////////////////////////// Deszyfrator ///////////////////////////" << endl<<endl<<endl<<endl;
- cout << "Tekst zaszyfrowany: " << Sekret << endl<<endl;
- Sekret = szyfrujCezar(-Klucz, Sekret, Spacje);
- Sekret = StringToLower(Sekret);
- cout << "Zdeszyfrowany tekst (Cezar): " << Sekret<<endl<<endl;
- Sekret = SzyfrujMacierz(Sekret);
- cout << "Zdeszyfrowany tekst (Macierz): " << Sekret<<endl<<endl;
- system("pause");
- return 0;
- }
- string SzyfrujMacierz(string f_tekstjawny)
- {
- int MatrixLen = WymiarTablicy(f_tekstjawny.length());
- int lenTab = MatrixLen*MatrixLen;
- char *tab = new char[lenTab+1];
- for (int i = 0; i < f_tekstjawny.length(); i++)
- tab[i] = f_tekstjawny[i];
- for (int i = f_tekstjawny.length(); i < lenTab + 1; i++)
- tab[i] = ' ';
- tab[lenTab] = '\0';
- UtworzMacierz(tab, f_tekstjawny.length());
- string wynik(tab);
- delete tab;
- return wynik;
- }
- void UtworzMacierz(char *f_tab, int f_size)
- {
- int wymiar = WymiarTablicy(f_size);
- int x = 0;
- char **tmp = new char*[wymiar];
- for (int i = 0; i < wymiar; i++)
- {
- tmp[i] = new char[wymiar];
- }
- x = 0;
- for (int i = 0; i < wymiar; i++)
- {
- for (int j = 0; j<wymiar; j++)
- {
- tmp[i][j] = f_tab[x];
- x++;
- }
- }
- x = 0;
- for (int i = 0; i < wymiar; i++)
- {
- for (int j = 0; j<wymiar; j++)
- {
- f_tab[x] = tmp[j][i];
- x++;
- }
- }
- for (int i = 0; i<wymiar; i++)
- delete[] tmp[i];
- delete[] tmp;
- }
- int WymiarTablicy(int f_wymiar)
- {
- int x = (int)sqrt(f_wymiar);
- if ((x - sqrt(f_wymiar)) != 0) return x + 1;
- else return x;
- }
- string szyfrujCezar(int klucz, string f_tekst , char * f_Spacje )
- {
- int dl = f_tekst.length();
- int x = 0;
- if (klucz >= 0)
- {
- f_tekst = StringToUpper(f_tekst);
- for (int i = 0; i < dl; i++)
- {
- if (f_tekst[i] != ' ')
- f_tekst[i] = (f_tekst[i] - 65 + klucz) % 26 + 65;
- else
- {
- f_tekst[i] = f_Spacje[x];
- x++;
- }
- }
- }
- else
- {
- for (int i = 0; i < dl; i++)
- {
- if (f_tekst[i] != f_Spacje[x])
- f_tekst[i] = (f_tekst[i] + 65 + klucz) % 26 + 65;
- else
- {
- f_tekst[i] = ' ';
- x++;
- }
- }
- }
- return f_tekst;
- }
- string StringToUpper(string strToConvert)
- {//change each element of the string to upper case
- for (unsigned int i = 0; i<strToConvert.length(); i++)
- {
- strToConvert[i] = toupper(strToConvert[i]);
- }
- return strToConvert;//return the converted string
- }
- string StringToLower(string strToConvert)
- {
- for (unsigned int i = 0; i<strToConvert.length(); i++)
- {
- strToConvert[i] = tolower(strToConvert[i]);
- }
- return strToConvert;//return the converted string
- }
- char* szyfrujSpacje(int f_lSpacji)
- {
- char * Tab = new char[f_lSpacji];
- int x;
- for (int i = 0; i < f_lSpacji; i++)
- Tab[i] = ' ';
- for (int i = 0; i < f_lSpacji; i++)
- {
- while (Tab[i - 1] == Tab[i] )
- {
- x = rand() % 65;
- }
- Tab[i] = (Tab[i] + 32 + i) % 31 + 32;
- }
- return Tab;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement