To mój pierwszy kontakt z programami szyfrującymi tekst (a zarazem pierwsza, samodzielna zabawa z plikami).
Kod:
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>

  using namespace std;
  void szyfrowanie (void);
  void deszyfrowanie (void);
  void inf (void);

/*------------------------------main ()-------------------------------*/
 int main()
 {
	bool exit=true;
	int wybor;
	cout<<"[ctrl]+[S] - szyfruj    plik"<<endl;
	cout<<"[ctrl]+[D] - deszyfruj  plik"<<endl;
	cout<<"[esc]      - exit"<<endl;
	while(exit)
	{
	 wybor=getch();
	 switch(wybor)
	 {
	 		  case 19:
		  			 szyfrowanie();
		  			 break;
      
				case 4:
        		 deszyfrowanie();
        		 break;
        
				case 27:
						 exit=false;
						 break;
			  case 59:
             inf();
             break;
	 }
	}
 }
 /*---------------------------szyfrowanie()---------------------------*/
 void szyfrowanie(void)
 {
    	cout<<"Szyfrowanie pliku\n";
 /*=====OPERACJE NA KLUCZU=====*/
         int a, b, c, d;
 			cout<<"Podaj 4-cyfrowy klucz szyfrowania"<<endl;
      a=getch();
      b=getch();
      c=getch();
      d=getch();
      
      cout<<"Klucz to: "<<a<<b<<c<<d<<endl;
 /*===== PLIK POCZĄTKOWY =====*/
      fstream wejscie;
 			wejscie.open("wiadomosc.txt",ios::in|ios::binary);
 			if(!wejscie)
 			{
				cerr<<"Open (in)      [ERROR]\n";
				return;
	    }
	    else cout<<"Open (in)      [OK]\n";
 /*====== PLIK WYNIKOWY ======*/
      fstream wyjscie;
	    wyjscie.open("wiadomosc_w.txt",ios::out|ios::binary);
			if(!wyjscie)
			{
			  cerr<<"Open (out)    [ERROR]\n";
			  return;
      }
      else cout<<"Open (out)     [OK]\n";		

/*== ODCZYT I ZAPIS ZNAKÓW DO PLIKÓW ==*/
    char znak[1000];
    wejscie.read(znak, 1000);
/*""""""""" PROCES SZYFROWANIA """"""""*/
     int l=0;
     while(l<=999)
     {
     znak[l]=znak[l]>>a;
     l++;
     znak[l]=znak[l]>>b;
     l++;
     znak[l]=znak[l]>>c;
     l++;
     znak[l]=znak[l]>>d;
     l++;
     }
     
    wyjscie.write(znak, 1000);
     
     wejscie.close();
     wyjscie.close();
     return; 
 }
 
 /*--------------------------deszyfrowanie()--------------------------*/
 void deszyfrowanie(void)
 {
	    cout<<"Deszyfrowanie pliku\n";
 /*=====OPERACJE NA KLUCZU=====*/
         int a, b, c, d;
 			cout<<"Podaj 4-cyfrowy klucz do deszfrowania, klucz\n";
 			cout<<"ten musi byc identyczny z kluczem szyfrowania."<<endl;
      a=getch();
      b=getch();
      c=getch();
      d=getch();
      
      cout<<"Klucz to: "<<a<<b<<c<<d<<endl;
 /*===== PLIK POCZĄTKOWY =====*/
      fstream wejscie;
 			wejscie.open("wiadomosc_w.txt",ios::in|ios::binary);
 			if(!wejscie)
 			{
				cerr<<"Open (in)      [ERROR]\n";
				return;
	    }
	    else cout<<"Open (in)      [OK]\n";
 /*====== PLIK WYNIKOWY ======*/
      fstream wyjscie;
	    wyjscie.open("wiadomosc.txt",ios::out|ios::binary);
			if(!wyjscie)
			{
			  cerr<<"Open (out)    [ERROR]\n";
			  return;
      }
      else cout<<"Open (out)     [OK]\n";		

/*== ODCZYT I ZAPIS ZNAKÓW DO PLIKÓW ==*/
    char znak[1000];
    wejscie.read(znak, 1000);
     cout<<znak<<endl;  
/*"""""""" PROCES DESZYFROWANIA """""""*/
     int l=0;
     while(l<=999)
     {
     znak[l]=znak[l]<<a;
     l++;
     znak[l]=znak[l]<<b;
     l++;
     znak[l]=znak[l]<<c;
     l++;
     znak[l]=znak[l]<<d;
     l++;
     }
     
    wyjscie.write(znak, 1000);
     
     wejscie.close();
     wyjscie.close();
     return;
 }	
 /*---------------------------Informacje[F1]--------------------------*/
 void inf (void)
 {
  
 }
Program się kompiluje i uruchamia. Problem pojawia się przy szyfrowaniu/ deszyfrowaniu. Z założenia wiadomość do zaszyfrowania miała być wpisana w wiadomosc.txt, a w pliku wiadomosc_w.txt miala byc w postaci zaszyfrowanej. Deszyfrowanie analogicznie. Niestety po zaszyfrowaniu i odszyfrowaniu wiadomości w obu plikach znajduje się ciąg białych znaków.

Proszę o jakieś wskazówki (zależy mi na możliwości wprowadzenia "klucza" i chcę uniknąć czegoś w stylu:
Kod:
if (znak[x]==a)znak[x]=b;
if (znak[x]==b)znak[x]=c;
etc.)

//Przepraszam za dość ograniczoną czytelność kodu (wcięcia). U mnie wygląda to dobrze, nie wiem czemu na forum się przestawia.