Python ile gereksiz bir proje

Can sıkıntısından aklıma gereksiz bir proje daha geldi, bilgisayarımda saklayacağım bazı numaraları şifreleyesim geldi ve basit bir şifreleme programı yazmaya karar verdim. Mantığı aşırı basit, girdiğiniz şeyi(string aslında) bir liste olarak kaydediyor, daha sonra bu listedeki elemanların yerlerini rastgele değiştirip kaçıncı elemanın şifrelenmiş halde kaçıncı eleman olduğunu “anahtar” altında kayıt ediyor. Anahtarın mantığı şu; eğer anahtardaki ilk eleman “7″ ise, bu ilk elemanın şifrelenmiş halde 7. eleman olduğu anlamına geliyor. İkinci fonksiyon da şifreli hal ile anahtardan, orjinal şeyi(string :) ) veriyor.

10 dakikada yazılmış bu koddan beklenebileceği gibi bir sürü eksiği var, hatta sadece kısa ve numaralardan oluşmuş stringlerde düzgün çalışıyor diyebilirim. Eğer uzun olursa anahtar da uzuyor(anahtar ile şifre aynı uzunlukta olacak). Eğer ASCII’de olmayan karakterler girerseniz sapıtıyor. Henüz buna bir çözüm bulamadım, o yüzden türkçe karakterler de kullanılamıyor. Neyse ki Python3 ile UTF’e geçeceğiz ve türkçe karakterlerle uğraşmamıza gerek kalmayacak. Fonksiyonlar aşağıda:

import random

def sifrele(girdi):
    a = 0
    pos = []
    yer = {}
    for i in girdi:
        pos.append(a)
        yer[a] = i
        a += 1
    random.shuffle(pos)
    sifreli = ""
    for i in pos:
        sifreli += yer[i]
    print sifreli
    print "anahtar:", pos

def coz(girdi, anahtar):
    a = 0
    pos = []
    for i in girdi:
        pos.append(a)
        a += 1
    cozum = ""
    for i in pos:
        cozum += girdi[anahtar.index(i)]
    print cozum

Bir daha canım sıkıldığında muhtemelen Regex Cheat Sheet gibi birşey hazırlamaya başlayacağım, konu anlatımlı test kitabı formatında olmasını planlıyorum :). Onun dışında .mp3 formatlı dosyaları kurcalamayı öğrendiğimde müzik arşivimi düzenleyecek bir kod yazmayı planlıyorum. Aslında bir de frame’e göre düzenlenmiş altyazıları zamana göre dönüştürmeyi planlıyorum..

Alakalı Yazılar