Sezar şifrelemesi en eski şifreleme türü olup şifrelenecek metindeki harflerin alfabede kendinden sonra gelen harfler ile yer değiştirilmesi ile elde edilir.
1 harf ötelendiği için alfabedeki ‘f’ harfi kendinden 1 sonraki ‘g’ harfi ile yerdeğiştirdi. Diğer harfler içinde aynısı uygulandı ve şifreli metin ‘gbuji’ olarak çıktı.
Programın kodları:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include<stdio.h> #include<conio.h> #include<locale.h> int main (void){ setlocale(LC_ALL,"TURKISH"); int i,j,k; int sayi; char a[100]; char x[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; printf("Şifrelenecek yazıyı tükçe karakter kullanmadan giriniz : "); while((a[k] = getchar())!='\n') k++ ; //scanf("%s",&a); printf("kaç harf öteleneceğini giriniz : "); scanf("%d",&sayi); for(i=0;i<k;i++) { for(j=0;j<26;j++){ if(a[i]==x[j]){ j=j+sayi; j=j % 26; a[i]=x[j]; break; } } } printf("%s",a); getch(); return 0; } |
İngilizce alfabe referans alınmıtır. Basit bir program olup şifrelemeye başlamak için güzel bir algoritmadır.
TÜBİTAK’ın her ay düzenli olarak yayınladığı 3 adet ödüllü şifreleme soruna linkten ulaşabilirsiniz.
http://bilgem.tubitak.gov.tr/tr/content/odullu-kriptoloji-yarismasi
asda
asdasdaasd
asdasd ?
Hocam yalnız biz başta k’nın kaç olduğunu belirtmedik k++; deyince k’yı neyden ve nasıl referans alarak arttırıyor?
whhile(a[k]) döngüsünden bahsediyorum.
k harfini ascii tablosundaki değerine göre arttırıyor diye biliyorum
Doğru söylüyorsun tanıma k=0; koyulması lazım.
while döngüsü içindeki eşitleme “a[k] = getchar()” kişi entere basana kadar “a” dizisini karakterler ile oluşturur.