Ötelemeli Sezar Şifreleme Yöntemi,
Bu yöntem; girilen cümlenin her karakteri belirtilen öteleme miktarı sonrasındaki karakter ile değiştirilmesiyle yeni cümle oluşturulmasıdır.
Algoritma:
- Yöntem uygulanacak cümle kullanıcıdan alınır.
- Öteleme miktarı kullanıcıdan alınır.
- Girilen cümledeki her karakter için öteleme ayrı ayrı yapılacağı için cümledeki tüm karakterleri gezmek gerekmektedir. Cümlenin boyutu kadar gezen bir döngü oluşturulur.
- Döngü içerisinde cümlenin o anki karakterinin ascii karşılığı bulunur.
- Eğer karakter boşluk ise değiştirilmez. Değil ise Ascii karşılığının 3 sonrası alınır. Eğer üç karşılığı harflerden başka karaktere giderse tekrar alfabenin ilk harfine geri dönülür ve öteleme miktarı kadar öteleme yapılır. ( Büyük ve küçük harf için ayrı ayrı yapılır.)
Bilinmesi Gerekenler:
Boşluğun ASCII karşılığı 32‘dir.
Küçük harfler (a-z) 97 ile başlar 122’a kadar devam eder.[97-122]
Büyük harfler(A-Z) 65 ile başlar 90’a kadar devam eder.[65-90]
Harfler dışındaki diğer karakterlerde herhangi bir öteleme yapılmamıştır.(Türkçe karakterlerde katılmamıştır.)
Eğer bir karakteri int tipine çevirilirse o karakterin ASCII karşılığı bulunur.
String’i char dizisine aktarmak için sezar.toCharArray() fonksiyonu kullanılabilir.
Java Kodu:
package ondortaralik; import java.util.Scanner; public class OnDortAralik { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String sezar; System.out.println("Cümle giriniz: "); sezar = scan.nextLine(); char[] sezarDizisi = sezar.toCharArray(); System.out.println("Öteleme indexi gir: "); int oteleme = scan.nextInt(); for(int i=0; i<sezarDizisi.length; i++) { int asciiSirasi = (int)sezarDizisi[i]; if(asciiSirasi == 32) sezarDizisi[i] = ' '; else { if(asciiSirasi >=65 && asciiSirasi <=90) { if((asciiSirasi+oteleme) >90) sezarDizisi[i] = (char) (((asciiSirasi+oteleme)%90) + 64); else sezarDizisi[i] = (char) (asciiSirasi+3); } if(asciiSirasi >=97 && asciiSirasi <=122) { if((asciiSirasi+oteleme) >122) sezarDizisi[i] = (char) (((asciiSirasi+oteleme)%122) + 96 ); else sezarDizisi[i] = (char) (asciiSirasi+3); } } } String yeniCumle = String.valueOf(sezarDizisi); System.out.println("Girilen Cümle: " + yeniCumle); } }
Ekran Çıktısı:
run: Cümle giriniz: Otelemeli Sezar Uygulanacak Cumle Öteleme indexi gir: 5 Girilen Cümle: Rwhohphol Vhedu Xdjxodqdfdn Fxpoh BUILD SUCCESSFUL (total time: 9 seconds)
Paylaşım için teşekkürler.