Proste szyfrowanie digramowe

0

Witam. Mam problem z prostym szyfrowaniem digramowym. Problem polega na tym, że nie wiem jak zdefiniować szyfrowanie dla plików o nieparzystej ilości bajtów. Program pobiera po dwa bajty i je szyfruje tylko jak plik będzie nieparzysty to trzeba coś zrobić z tym nieparzystym bajtem. Ogólnie program ma szyfrować i deszyfrować pliki binarnie. Czy istnieje jakiś wmiarę prosty sposób na szyfrowanie/deszyfrowanie nieparzystych plików?

 #include<string.h>
 #include<iostream>
 #include<fstream>

 using namespace std;

 void code(char nazwa1[],char nazwa2[],int a,int b)
 {
    char znaczki[2];
    int tekst, krypto;
    ifstream wej(nazwa1,ios::in|ios::binary);
    ofstream wyj(nazwa2,ios::out|ios::binary);   

    while(!wej.eof())
    {
        wej.read(znaczki, 2);
        tekst=256*znaczki[0]+znaczki[1];
        krypto=(a*((int)tekst)+b)%65536;
        znaczki[0]=krypto/256;
        znaczki[1]=krypto%256;
        wyj.write(znaczki, 2);
    }
    wej.close();
    wyj.close();
 }

 int getUncode(int a)
 {
  int c;
  c=1;

  if (a%2==0)
  {
  cout<<"Niewlasciwy klucz"<<endl;
  return 0;
  }

  while ((c*a)%65536!=1)c++;
  return c;
 }


 int main()
 {
  int a, b,c,d,wybor;
  char plik1[255];
  char plik2[255];
  cout<<" 1 - Szyfrowanie "<<endl;
  cout<<" 2 - Odszyfrowanie "<<endl;
  cout<<"Co chcesz zrobic ? :  ";
  cin>>wybor;
  cout<<"Wprowadz klucze kodowania K(A,B)"<<endl;
  cin>>a;
  cin>>b;
  cout<<"Podaj nazwe pliku do zaszyfrowania/odszyfrowania: ";
  cin>>plik1;
  cout<<"Podaj nazwe pliku wynikowego: ";
  cin>>plik2;

  if(wybor==1)
  {
  code(plik1,plik2,a,b);
  }

  else if(wybor==2)
  {
  c = getUncode(a);
  d = ((65536-b)*c)%65536;
  code(plik1,plik2,c,d);
  }

  system("PAUSE");
 }

1 użytkowników online, w tym zalogowanych: 0, gości: 1