• Menu
  • Încearcă și tu
  • Despre Cifrul lui Cezar
  • Acasă
  • Cifrul lui Cezar

    Ce este cifrul lui Cezar?
    Cifrul lui Cezar, cunoscut și sub numele de cifru cu deplasare sau cifru al substituției, reprezintă una dintre cele mai familiare tehnici de criptare. În acest procedeu, fiecare literă din textul original este înlocuită cu alta din alfabet, situată la o anumită distanță fixă în ordine. De exemplu, în cazul unei deplasări de trei poziții în alfabetul limbii engleze, litera A devine D, B devine E și așa mai departe. Acest procedeu poartă numele lui Iulius Cezar, care l-a utilizat pentru a comunica cu generalii săi.
    Conform lui Suetoniu, îl folosea cu o deplasare de 3 pentru protejarea mesajelor cu importanță militară:

    Dacă avea ceva confidențial de comunicat, scria încifrat, adică schimba ordinea literelor din alfabet, astfel încât nu se putea înțelege nici un cuvânt. Dacă cineva dorește să descifreze și să înțeleagă, trebuie să înlocuiască a patra literă din alfabet, adică D, cu A, și așa mai departe pentru celelalte.
    —Suetoniu, Viața lui Iulius Cezar 56

    Transformarea poate fi reprezentată printr-o aliniere a două alfabete:

    cheia: 3
    alfabet englez: ABCDEFGHIJKLMNOPQRSTUVWXYZ
    alfabet criptat: DEFGHIJKLMNOPQRSTUVWXYZABC

    Pentru a decripta mesajul, destinatarul trebuie să știe deplasarea utilizată și să aplice operația inversă: să înlocuiască fiecare literă criptată cu litera corespunzătoare din alfabetul original.
    Este important de menționat că acest cifru este foarte simplu și ușor de spart, deoarece există doar 25 de combinații posibile (pentru alfabetul englezesc), ceea ce face ca criptarea să fie vulnerabilă la atacuri brute force sau analize de frecvență.

    Criptează Mesajul

    Codul in c++ pentru criptare

     
      for(i=0;i<l;i++)
    	  if(s[i]!=' ')
    	  {
    		  if(s[i]>='a' && s[i]<='z')
    		  {
    			  c=s[i]+n;
    			  if(c>'z')
    				  c=c-26;
    			  s[i]=(char)c;
    		  }
    		  else if(s[i]>='A' && s[i]<='Z')
    		  {
    			  c=s[i]+n;
    			  if(c>'Z')
    				  c=c-26;
    			  s[i]=(char)c;
    		  }
    	  }
    	               

    Decriptează Mesajul

    Codul in c++ pentru decriptare

      
      for(i=0;i<l;i++)
    	  if(s[i]!=' ')
    	  {
    		  if(s[i]>='a' && s[i]<='z')
    		  {
    			  c=s[i]-n;
    			  if(c<'a')
    				  c=c+26;
    			  s[i]=(char)c;
    		  }
    		  else if(s[i]>='A' && s[i]<='Z')
    		  {
    			  c=s[i]-n;
    			  if(c<'A')
    				  c=c+26;
    			  s[i]=(char)c;
    		  }
    	  }