Şifreleme etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Şifreleme etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Haziran 2022 Cumartesi

Türkçe Sezar Şifreleme Uygulaması C#

 Sezar şifreleme karakter kaydırma özelliğine dayalı basit bir şifreleme egzersizi olarak düşünülebilir. Kaydırma işlemi genellikle C dilindeki char bir değişken ile integer bir değerin toplanması sonucu yeni bir char değer elde edilmesine dayanır. Örneğin C dilinde char degisken; degisken = 'A'; dediğiniz ve değişkeni degisken = degisken + 2 ; denildiğinde  C değerini alır. Bu işlem Sezar şifrelemede kolaylık sağlasa da büyük küçük harf ve Türkçe karakter işin içine girdiğinde oldukça çetrefilli olmakta. ASCII tablosu üzerinden kaydırma yapmak yerine belirlenen bir dizi üzerinden kaydırma yapmak Sezar şifreleme için daha güzel bir çözüm olacaktır. Bu nedenle aşağıdaki kod bloğunda öncelikli olarak bir karakter dizisi belirlenmiş girilen metin bu char dizinde kaçıncı karaktere karşılık geldiği yeni bir integer dizi ile tutulmuş ve kullanıcıdan alınan sayı kadar bu integer dizi kaydırılmıştır. Kaydırma işlemi sonucunda dizinin sonu geçip başa dönmesi için Mod işlemi kullanmakta kaçınılmaz olacaktır.

Bu sezar şifreleme uygulaması Windows form üzerinde geliştirilmiştir ve uygulamanın görüntüsü ve kodları şöyledir;

 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text;

namespace SezarSifrelemeWindows
{
    public partial class Form1 : Form
    {
        char[] harfler = { 'a', 'b', 'c' ,'ç','d','e','f','g','ğ','h','ı','i','j','k','l','m', 'n', 'o', 'ö', 'p', 'r','s', 'ş', 't', 'u', 'ü', 'v', 'y','z','A', 'B', 'C' ,'Ç','D','E','F','G','Ğ','H','I','İ','J','K','L','M', 'N', 'O', 'Ö', 'P', 'R','S', 'Ş', 'T', 'U', 'Ü', 'V', 'Y','Z', ' ','.',',','?','!','+','-','1', '2', '3', '4', '5', '6', '7', '8', '9', '0' };
        public Form1()
        {
            InitializeComponent();
        }


        private void btnsifrele_Click(object sender, EventArgs e)
        {
            char[] metin_char = txtmetin.Text.ToString().ToCharArray();
            int[] degerler = new int[txtmetin.Text.ToString().Count()] ;
          
            for (int i = 0; i < metin_char.Length; i++)
            {
                for (int k = 0; k < harfler.Length; k++)
                {
                    if (metin_char[i] == harfler[k])
                    {
                        degerler[i] = k;
                    }
                }
            }

            for (int m = 0; m < degerler.Count(); m++)
            {
                degerler[m] += Convert.ToInt16(combo_sifrele.Text.ToString());
            }

            for (int r = 0; r < degerler.Count(); r++)
            {
                if (degerler[r] >= harfler.Length)
                    degerler[r] = degerler[r] % harfler.Length;
            }

            char[] sifreli_metin = new char[txtmetin.Text.ToString().Count()];

            for (int t  = 0; t < degerler.Length; t++)
            {

                sifreli_metin[t] = harfler[degerler[t]];
            }

            string str_sifreli_metin = new string(sifreli_metin);
            txtsifreli.Text = str_sifreli_metin;

        }

        private void btncoz_Click(object sender, EventArgs e)
        {
            char[] metin_char = txtsifreli.Text.ToString().ToCharArray();
            int[] degerler = new int[txtsifreli.Text.ToString().Count()];

            for (int i = 0; i < metin_char.Length; i++)
            {
                for (int k = 0; k < harfler.Length; k++)
                {
                    if (metin_char[i] == harfler[k])
                    {
                        degerler[i] = k;
                    }
                }
            }

            for (int m = 0; m < degerler.Count(); m++)
            {
                degerler[m] -= Convert.ToInt16(combo_coz.Text.ToString());
            }

            for (int r = 0; r < degerler.Count(); r++)
            {
                if (degerler[r] < 0)
                    degerler[r] = degerler[r] + harfler.Length;
            }

            char[] cozulmus_metin = new char[txtsifreli.Text.ToString().Count()];

            for (int t = 0; t < degerler.Length; t++)
            {

                cozulmus_metin[t] = harfler[degerler[t]];
            }

            string str_cozulmus_metin = new string(cozulmus_metin);
            txtmetin.Text = str_cozulmus_metin;
        }
    }
}