Gizliliği sağlamak amacıyla metinleri şifrelemek için kullanılan Sezar, Vigenere, Vernam (One-Time Pad) ve Çarpım (Substitution + Transposition) şifreleme yöntemleridir.
Kriptografi, bilginin yetkisiz kişilerin eline geçmesini önlemek için okunabilir veriyi (plaintext) anlamsız bir biçime (ciphertext) dönüştürme bilimidir.
Sezar Şifrelemesi (Caesar Cipher), alfabedeki her karakteri sabit bir anahtar kadar kaydıran klasik bir ikame (substitution) şifresidir. Vigenere Şifrelemesi ise kelime şeklinde bir anahtar kullanarak her harfi anahtarın ilgili harfinin sırasına göre farklı miktarlarda kaydırarak frekans analizini zorlaştırır.
Vernam Şifrelemesi (One-Time Pad), metinle aynı uzunlukta tamamen rastgele tek kullanımlık bir anahtar ile XOR veya modüler toplama yaparak kırılması matematiksel olarak imkansız (perfect secrecy) şifreli metin üretir. Çarpım Şifrelemesi (Product Cipher) ise substitution (yerine koyma) ve transposition (yer değiştirme / permütasyon) işlemlerini ardışık uygulayarak daha güçlü şifreleme blokları elde eder (modern AES/DES algoritmalarının atasıdır).
Aşağıdaki uygulamalar PDF kaynaklarındaki pseudo kod akışını modern veri yapılarıyla ifade eder. Kenar durumları görünür bırakıldığı için örnekler doğrudan test edilebilir.
1// Caesar Cipher2function caesarEncrypt(text: string, shift: number): string {3 return text4 .toUpperCase()5 .split('')6 .map((char) => {7 const code = char.charCodeAt(0);8 if (code >= 65 && code <= 90) {9 return String.fromCharCode(((code - 65 + shift) % 26) + 65);10 }11 return char;12 })13 .join('');14}1516// Vigenere Cipher17function vigenereEncrypt(text: string, key: string): string {18 const cleanText = text.toUpperCase().replace(/[^A-Z]/g, '');19 const cleanKey = key.toUpperCase().replace(/[^A-Z]/g, '');20 if (cleanKey.length === 0) return cleanText;2122 let cipher = '';23 for (let i = 0; i < cleanText.length; i++) {24 const pCode = cleanText.charCodeAt(i) - 65;25 const kCode = cleanKey.charCodeAt(i % cleanKey.length) - 65;26 const cCode = (pCode + kCode) % 26;27 cipher += String.fromCharCode(cCode + 65);28 }29 return cipher;30}Modu, anahtarı ve metni noktalı virgülle ayırarak girin. Modlar: CAESAR, VIGENERE, VERNAM, PRODUCT. Örnek: VIGENERE; KEY; ATTACKATDAWN
Modu, anahtarı ve metni noktalı virgülle ayırarak girin. Modlar: CAESAR, VIGENERE, VERNAM, PRODUCT. Örnek: VIGENERE; KEY; ATTACKATDAWN
En İyi Durum: O(N) doğrusal zamanda
Ortalama Durum: O(N)
En Kötü Durum: O(N)
O(N) şifrelenmiş metin dizisi için - Bu algoritmanın karmaşıklığı belirtilmemiş.
Kriptografi (Cryptography) Algoritması ile benzer veya alternatif olarak değerlendirilebilecek diğer başlıklar: