Criptosistemul Cezar

Aspecte teoretice:
În criptografie, cifrul lui Cezar, numit și cifru cu deplasare, codul lui Cezar sau deplasarea lui Cezar, este una dintre cele mai simple și mai cunoscute tehnici de criptare. Este un tip de cifru al substituției, în care fiecare literă din textul inițial este înlocuită cu o literă care se află în alfabet la o distanță fixă față de cea înlocuită. De exemplu, cu o deplasare de 3 poziții, A este înlocuit cu D, Ă devine E și așa mai departe. Această metodă este numită așa după Iulius Cezar, care o folosea pentru a comunica cu generalii săi.
Transformarea poate fi reprezentată printr-o aliniere a două alfabete; alfabetul cifrului este alfabetului normal rotat la stânga sau la dreapta cu un număr de poziții. În exemplul de mai jos cifrul folosește o rotație la stânga cu cinci poziții (parametrul de deplasare, aici 5, este folosit drept cheia cifrării):
Normal: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Cifru : XYZABCDEFGHIJKLMNOPQRSTUVW
Pentru a cripta un mesaj se caută fiecare literă a mesajului în linia “Normal” și se scrie litera corespunzătoare din linia “Cifru”. Pentru decriptarea unui text cifrat se procedează invers.
Mesaj inițial: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
Mesaj criptat: QEB NRFZH YOLTK CLU GRJMP LSBO QEB IXWV ALD
Implementare:
Logo_C_Sharp
Cod Sursa C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace CriptareCezar
{
    class Program
    {
        static char Encrypt(char ch, int code)
        {
            if (!char.IsLetter(ch))
            {
                return ch;
            }
            char offset = char.IsUpper(ch) ? 'A' : 'a';
            return (char)(((ch + code - offset) % 26) + offset);
        }
 
        static string Encrypt(string input, int code)
        {
            return new string(input.ToCharArray().Select(ch => Encrypt(ch, code)).ToArray());
        }
 
        static string Decrypt(string input, int code)
        {
            return Encrypt(input, 26 - code);
        }
 
        const string TestCase = "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.";
 
        static void Main()
        {
            string str = TestCase;
 
            Console.WriteLine(str);
            str = Encrypt(str, 23);
            Console.WriteLine("Mesaj criptat: {0}", str);
            str = Decrypt(str, 23);
            Console.WriteLine("Mesaj decriptat: {0}", str);
            Console.ReadKey();
        }
    }
 
}
 Rezultat:
cezar rezultat

Leave a comment