Advertisement
Guest User

Untitled

a guest
Jan 29th, 2015
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.26 KB | None | 0 0
  1. // Kryptografia_2_Projekt.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <fstream>
  7. #include <string>
  8. #include <time.h>
  9.  
  10. using namespace std;
  11.  
  12. string SzyfrujMacierz(string f_tekstjawny);
  13. void UtworzMacierz(char *, int );
  14. int WymiarTablicy(int f_wymiar);
  15. string StringToUpper(string strToConvert);
  16. string StringToLower(string strToConvert);
  17. string szyfrujCezar(int klucz, string f_tekst, char*);
  18. char* szyfrujSpacje(int);
  19.  
  20.  
  21.  
  22. int _tmain(int argc, _TCHAR* argv[])
  23. {
  24.  
  25.     srand(time(NULL));
  26.  
  27.     string TekstJawny;
  28.     string Sekret;
  29.     int Klucz = rand() % 65;
  30.  
  31.  
  32.     cout <<endl<<endl<< " ////////////////////////////  Szyfrator   ///////////////////////////" << endl << endl<<endl<<endl;
  33.  
  34.     cout << "Wpisz tekst w celu zaszyfrowania go: " << endl<<endl;
  35.  
  36.     getline(cin,TekstJawny);
  37.    
  38.     Sekret = SzyfrujMacierz(TekstJawny);
  39.  
  40.     size_t n = count(Sekret.begin(), Sekret.end(), ' ');
  41.  
  42.     char *Spacje = new char[n];
  43.  
  44.     Spacje=szyfrujSpacje(n);
  45.  
  46.     cout <<endl<< "Tekst po szyfrowaniu Macierz(Kwadrat): " << Sekret << endl<<endl;
  47.  
  48.  
  49.     Sekret = szyfrujCezar(Klucz, Sekret,Spacje);
  50.  
  51.     cout << "Tekst po szyfrowaniu Cezar: " << Sekret << endl<<endl;aA
  52.  
  53.     //system("pause");
  54.  
  55.     //system("cls");
  56.  
  57.     cout <<endl<<endl<< " ////////////////////////////  Deszyfrator ///////////////////////////" << endl<<endl<<endl<<endl;
  58.  
  59.     cout << "Tekst zaszyfrowany: " << Sekret << endl<<endl;
  60.  
  61.     Sekret = szyfrujCezar(-Klucz, Sekret, Spacje);
  62.  
  63.     Sekret = StringToLower(Sekret);
  64.  
  65.     cout << "Zdeszyfrowany tekst (Cezar): " << Sekret<<endl<<endl;
  66.  
  67.     Sekret = SzyfrujMacierz(Sekret);
  68.  
  69.    
  70.     cout << "Zdeszyfrowany tekst (Macierz): " << Sekret<<endl<<endl;
  71.  
  72.     system("pause");
  73.  
  74.     return 0;
  75. }
  76.  
  77. string SzyfrujMacierz(string f_tekstjawny)
  78. {
  79.  
  80.  
  81.     int MatrixLen = WymiarTablicy(f_tekstjawny.length());
  82.     int lenTab = MatrixLen*MatrixLen;
  83.  
  84.     char *tab = new char[lenTab+1];
  85.  
  86.     for (int i = 0; i < f_tekstjawny.length(); i++)
  87.         tab[i] = f_tekstjawny[i];
  88.  
  89.  
  90.     for (int i = f_tekstjawny.length(); i < lenTab + 1; i++)
  91.         tab[i] = ' ';
  92.  
  93.     tab[lenTab] = '\0';
  94.  
  95.    
  96.  
  97.     UtworzMacierz(tab, f_tekstjawny.length());
  98.  
  99.  
  100.     string wynik(tab);
  101.  
  102.  
  103.     delete tab;
  104.  
  105.     return wynik;
  106.  
  107. }
  108.  
  109.  
  110. void UtworzMacierz(char *f_tab, int f_size)
  111. {
  112.     int wymiar = WymiarTablicy(f_size);
  113.     int x = 0;
  114.     char **tmp = new char*[wymiar];
  115.  
  116.     for (int i = 0; i < wymiar; i++)
  117.     {
  118.         tmp[i] = new char[wymiar];
  119.  
  120.     }
  121.  
  122.     x = 0;
  123.     for (int i = 0; i < wymiar; i++)
  124.     {
  125.         for (int j = 0; j<wymiar; j++)
  126.         {
  127.             tmp[i][j] = f_tab[x];
  128.             x++;
  129.         }
  130.     }
  131.  
  132.     x = 0;
  133.     for (int i = 0; i < wymiar; i++)
  134.     {
  135.         for (int j = 0; j<wymiar; j++)
  136.         {
  137.             f_tab[x] = tmp[j][i];
  138.             x++;
  139.         }
  140.     }
  141.  
  142.     for (int i = 0; i<wymiar; i++)
  143.         delete[] tmp[i];
  144.  
  145.     delete[] tmp;
  146.  
  147. }
  148.  
  149. int WymiarTablicy(int f_wymiar)
  150. {
  151.     int x = (int)sqrt(f_wymiar);
  152.     if ((x - sqrt(f_wymiar)) != 0) return x + 1;
  153.     else return x;
  154. }
  155.  
  156. string szyfrujCezar(int klucz, string f_tekst , char * f_Spacje )
  157. {
  158.     int dl = f_tekst.length();
  159.  
  160.  
  161.     int x = 0;
  162.  
  163.     if (klucz >= 0)
  164.     {
  165.         f_tekst = StringToUpper(f_tekst);
  166.  
  167.         for (int i = 0; i < dl; i++)
  168.         {
  169.  
  170.  
  171.             if (f_tekst[i] != ' ')
  172.                 f_tekst[i] = (f_tekst[i] - 65 + klucz) % 26 + 65;
  173.             else
  174.             {
  175.                 f_tekst[i] =  f_Spacje[x];
  176.                 x++;
  177.             }
  178.            
  179.  
  180.         }
  181.     }
  182.     else
  183.     {
  184.         for (int i = 0; i < dl; i++)
  185.         {
  186.             if (f_tekst[i] != f_Spacje[x])
  187.                 f_tekst[i] = (f_tekst[i] + 65 + klucz) % 26 + 65;
  188.             else
  189.             {
  190.                 f_tekst[i] = ' ';
  191.                 x++;
  192.             }
  193.  
  194.                
  195.            
  196.         }
  197.            
  198.     }
  199.    
  200.  
  201.  
  202.     return f_tekst;
  203.  
  204. }
  205.  
  206. string StringToUpper(string strToConvert)
  207. {//change each element of the string to upper case
  208.     for (unsigned int i = 0; i<strToConvert.length(); i++)
  209.     {
  210.         strToConvert[i] = toupper(strToConvert[i]);
  211.     }
  212.     return strToConvert;//return the converted string
  213. }
  214.  
  215. string StringToLower(string strToConvert)
  216. {
  217.     for (unsigned int i = 0; i<strToConvert.length(); i++)
  218.     {
  219.         strToConvert[i] = tolower(strToConvert[i]);
  220.     }
  221.     return strToConvert;//return the converted string
  222. }
  223.  
  224. char* szyfrujSpacje(int f_lSpacji)
  225. {
  226.     char * Tab = new char[f_lSpacji];
  227.     int x;
  228.     for (int i = 0; i < f_lSpacji; i++)
  229.         Tab[i] = ' ';
  230.  
  231.     for (int i = 0; i < f_lSpacji; i++)
  232.     {
  233.         while (Tab[i - 1] == Tab[i] )
  234.         {
  235.             x = rand() % 65;
  236.         }
  237.        
  238.         Tab[i] = (Tab[i] + 32 + i) % 31 + 32;
  239.     }
  240.        
  241.  
  242.     return Tab;
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement