Lab 3: Vigenère Cipher - Cipher Polyalphabetic Pertama
Target: Memahami Vigenère cipher dan mengapa lebih kuat dari Caesar
Tools:python3
Konsep
Vigenère menggunakan kata kunci - setiap huruf plaintext digeser dengan key yang berbeda berdasarkan posisi dalam kata kunci. Ini membuat frequency analysis tidak langsung bekerja karena huruf yang sama bisa dienkripsi berbeda.
Plain: HELLO WORLD
Key: KEYKEYKEYK
Cipher: RIJVS UYVJN
Praktikum
cd ~ && mkdir crypto-lab3 && cd crypto-lab3
python3 << 'PYEOF'
import string
def vigenere(text, key, decrypt=False):
result = []
key = key.upper()
key_idx = 0
for c in text.upper():
if c in string.ascii_uppercase:
shift = ord(key[key_idx % len(key)]) - 65
if decrypt:
shift = -shift
result.append(chr((ord(c) - 65 + shift) % 26 + 65))
key_idx += 1
else:
result.append(c)
return ''.join(result)
# Enkripsi
plain = "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG"
key = "SECRET"
cipher = vigenere(plain, key)
print(f"Plain: {plain}")
print(f"Key: {key}")
print(f"Cipher: {cipher}")
print()
# Dekripsi
decrypted = vigenere(cipher, key, decrypt=True)
print(f"Dekrip: {decrypted}")
print()
# Demonstrasi: huruf 'E' dienkripsi ke huruf berbeda!
print("=== Demonstrasi Polyalphabetic ===")
positions = [i for i, c in enumerate(plain) if c == 'E']
for pos in positions:
print(f" Huruf 'E' di posisi {pos} → '{cipher[pos]}'")
print("\n(E dienkripsi ke huruf berbeda setiap kali!)")
PYEOF
️ Analisis
| Cipher | Key Space | Ketahanan Freq Analysis |
|---|---|---|
| Caesar | 26 | Sangat rentan |
| Substitution | 26! (4×10²⁶) | Rentan |
| Vigenère | 26^len(key) | Cukup tahan (key panjang) |
Kelebihan Vigenère: Huruf yang sama bisa dienkripsi ke huruf berbeda (menyamarkan frekuensi).
Kelemahan: Jika key pendek, pola berulang terlihat. Kasiski examination bisa menentukan panjang key.
Refleksi: Vigenère dianggap "tidak terpecahkan" selama 300 tahun hingga Kasiski menemukan metodenya pada 1863. Tidak ada cipher yang benar-benar aman selamanya.
Generated by @farishhz Agent Pentest Pipeline - TDCTF Security Academy