[C++] Implementacja DES

Rudis
Użytkownik
Użytkownik
Posty: 83
Rejestracja: 6 sty 2014, o 13:07
Płeć: Mężczyzna
Lokalizacja: Brak
Podziękował: 3 razy
Pomógł: 17 razy

[C++] Implementacja DES

Post autor: Rudis »

Cześć,
Jako projekt mam napisać implementacje algorytmu DES w C++.
Z programowania jestem cienki jak $#@^#.
Próbowałem coś napisać i skończyłem na tym, że napisałem funkcje, która zamienia 8 liter na 64 bitowy ciąg.Inna funkcja miała na celu podzielić 64 bitowy ciąg na dwa podciągi ale nie mam pojęcia jak wrzucić ten 64 bitowy ciąg jako argument funkcji podziału.W tym tkwi problem.Ogólnie nie mam pomysłu jak to pisać więc jeżeli ktos ma jakieś sugestie to chętnie się wczytam.

Nie wiem w jakich tagach wstawiać kod więc wstawiam luzem:

Kod: Zaznacz cały

#include <cstdlib>
#include <iostream>
using namespace std;
   
/*************************************************************************************/
int bin(char tb[9]) // Funkcja zamieniająca 8 zanków na 64 bity w jednej tablicy.
{  
int a1,b1,a2,b2,a3,b3,a4,b4,a5,b5,a6,b6,a7,b7,a8,b8;
a1=tb[0];
b1=a1-97;
int i1,y1;
    int tab1[8]={0};
    for( i1 =0; b1>=1;i1++)
    {    
    y1=b1%2;
    b1=b1/2;
    tab1[i1]=y1;
    }
    reverse(tab1,tab1+8);
    for( int k1 = 0; k1 < 8; k1++ )
    {
        cout << tab1[ k1 ];
    }

a2=tb[1];
b2=a2-97;
int i2,y2;
    int tab2[8]={0};
    for( i2 =0; b2>=1;i2++)
    {    
    y2=b2%2;
    b2=b2/2;
    tab2[i2]=y2;
    }
    reverse(tab2,tab2+8);
    for( int k2 = 0; k2 < 8; k2++ )
    {
        cout << tab2[ k2 ];
    }

a3=tb[2];
b3=a3-97;
int i3,y3;
    int tab3[8]={0};
    for( i3 =0; b3>=1;i3++)
    {    
    y3=b3%2;
    b3=b3/2;
    tab3[i3]=y3;
    }
    reverse(tab3,tab3+8);
    for( int k3 = 0; k3 < 8; k3++ )
    {
        cout << tab3[ k3 ];
    }
    
a4=tb[3];
b4=a4-97;
int i4,y4;
    int tab4[8]={0};
    for( i4 =0; b4>=1;i4++)
    {    
    y4=b4%2;
    b4=b4/2;
    tab4[i4]=y4;
    }
    reverse(tab4,tab4+8);
    for( int k4 = 0; k4 < 8; k4++ )
    {
        cout << tab4[ k4 ];
    }

a5=tb[4];
b5=a5-97;
int i5,y5;
    int tab5[8]={0};
    for( i5 =0; b5>=1;i5++)
    {    
    y5=b5%2;
    b5=b5/2;
    tab5[i5]=y5;
    }
    reverse(tab5,tab5+8);
    for( int k5 = 0; k5 < 8; k5++ )
    {
        cout << tab5[ k5 ];
    }

a6=tb[5];
b6=a6-97;
int i6,y6;
    int tab6[8]={0};
    for( i6 =0; b6>=1;i6++)
    {    
    y6=b6%2;
    b6=b6/2;
    tab6[i6]=y6;
    }
    reverse(tab6,tab6+8);
    for( int k6 = 0; k6 < 8; k6++ )
    {
        cout << tab6[ k6 ];
    }

a7=tb[6];
b7=a7-97;
int i7,y7;
    int tab7[8]={0};
    for( i7 =0; b7>=1;i7++)
    {    
    y7=b7%2;
    b7=b7/2;
    tab7[i7]=y7;
    }
    reverse(tab7,tab7+8);
    for( int k7 = 0; k7 < 8; k7++ )
    {
        cout << tab7[ k7 ];
    }

a8=tb[7];
b8=a8-97;
int i8,y8;
    int tab8[8]={0};
    for( i8 =0; b8>=1;i8++)
    {    
    y8=b8%2;
    b8=b8/2;
    tab8[i8]=y8;
    }
    reverse(tab8,tab8+8);
    for( int k8 = 0; k8 < 8; k8++ )
    {
        cout << tab8[ k8 ];
    }
cout <<endl;
cout <<endl;
int tax[64];
for(int i=0;i<8;i++) 
tax[i]=tab1[i];
for(int i=8;i<16;i++) 
tax[i]=tab2[i-8];
for(int i=16;i<24;i++) 
tax[i]=tab3[i-16];
for(int i=24;i<32;i++) 
tax[i]=tab4[i-24];
for(int i=32;i<40;i++) 
tax[i]=tab5[i-32];
for(int i=40;i<48;i++) 
tax[i]=tab6[i-40];
for(int i=48;i<56;i++) 
tax[i]=tab7[i-48];
for(int i=56;i<64;i++) 
tax[i]=tab8[i-56];
//for(int i=0;i<64;i++) 
//cout<<tax[i];
return *tax;
}  

/***********************************************************************************************/

int dzielblok(int * tabs)
{
    int L[32]={0};
    int R[32]={0};
    for(int i=0;i<32;i++)
    L[i]=tabs[i];
    for(int i=32;i<64;i++)
    R[i-32]=tabs[i];
    for(int i=0;i<32;i++)
    cout << R[i];
    cout <<endl;
    for(int i=0;i<32;i++)
    cout <<L[i];
    cout <<endl;
  
   
}
    
   

int main(int argc, char *argv[])
{
int t;
char k[9];
cin >> k;
bin(k);



//dzielblok();
///////////////////////////////////////////////////////////////////////////
/*int rozmiar,v;
cout <<"Podaj dlugosc tekstu do szyfrowania . pamietaj szyfrujemy bez spacji itd.. only teskt "<<endl;
cin >> rozmiar;
v=rozmiar-1;
char * tab=new char[rozmiar]; //rozmiar np. x=43 czyli 5 tablic i polowa
for(int i=0;i<=v;i++)
{
                       cin >>tab[i];
}
for(int i=0;i<=v;i++)
{
                       cout << tab[i];
}

cout <<endl;   //brakuje permutacji i rozdzieliana na 8 znakow po 8 bitow
char tab1[8];
for(int i=0 ;i<8;i++)
{ tab1[i]=tab[i]; }
for(int i=0;i<=v;i++)
{
                       cout << tab1[i];
}*/
   //////////////////////////////////////////////////////////////////////  
  


   
   
   cout << '\n';
    cin.clear();
    cin.sync();
    cin.get();
    return EXIT_SUCCESS;
}
Wiem wiem ,prymitywne.
Ostatnio zmieniony 25 lis 2014, o 22:32 przez Afish, łącznie zmieniany 3 razy.
Powód: [code][/code]
Rudis
Użytkownik
Użytkownik
Posty: 83
Rejestracja: 6 sty 2014, o 13:07
Płeć: Mężczyzna
Lokalizacja: Brak
Podziękował: 3 razy
Pomógł: 17 razy

[C++] Implementacja DES

Post autor: Rudis »

Projekt skończony.Temat do zamknięcia.
ODPOWIEDZ