namespace WinSezarSifreleme
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
char[] normal = richTextBox1.Text.ToCharArray();
for (int i = 0; i < normal.Length; i++)
{
int asil = (int)normal[i];
int asciiKarsilik = asil + 3;
richTextBox2.Text += ((char)asciiKarsilik).ToString();
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}Caesar Şifresi Nedir?
kriptografide kirilmasi kolay sifrelerden biri. adindan da anlasilacagi
uzerine caesar icat etmis bu sifreyi. yontemi sadece harf kaydirmaktan
ibarettir. ornegin; alfabe normalde a,b,c,d.. diye devam eder. bu
sifrede, alfabeyi atiyorum "e" harfinden baslattigimiz dusunulurse, a=e ,
b=f , c=g.. diye devam eder.
Kodlama Mantığı;
Uygulamamız oldukça basit iki adet richTextBox ve bir Buton
ile Formumuzu dizayn ediyoruz.
Sonra normal adında char veri tipinde bir dizi değişken tanımlayıp,
kullanıcının girmiş olduğu veriyi bu değişkende diziler halinde
tutuyoruz.
sonra bir for döngüsü kuruyoruz ve bu döngü 0 dan başlayarak
"normal.Length" ile aldığımız kullanıcının girmiş olduğu harf sayısı
kadar dönmesini sağlayıp bir artırıyoruz. Bizim girmiş olduğumuz
Karakterler bilgisayar için anlamsız olduğundan bunları ascii ye
çevirebilmek için int asil = (int)normal[i]; tanımlayarak bir tip
dönüşümü yapıyoruz. Evet geldik en heyecanlı noktaya;
int asciiKarsilik = asil + 3; burada ise girdiğimiz kelimeyi 3 harf ötesine
götürebilmek için asil ismini verdiğimiz değişkeni 3 artırıp
richTextBox2 ye basıyoruz.
kaynak: http://en.wikipedia.org/wiki/Caesar_cipher
Paylaşım için teşekkürler.
YanıtlaSilFakat şöyle bir durum var: kişi "z" girerse ascii koduna göre "}" yazıyor.
Kodları bir kere daha gözden geçirip z görünce tekrar a'ya dönen ve
bu şekilde devam eden program yapılırsa daha iyi olabilir.
Buna da ek olarak sırf Türkçe karakterler için olan bir versiyon yapılabilir mi acaba?