Python Dilinde Yazıyı Karmaşıklaştırma

Python Dilinde Yazıyı Karmaşıklaştırma

Merhabalar yazılım meraklıları,

Bu yazımızda sizlerle basit anlamda şifreleme yöntemini anlatan iki birbiriyle bağlantılı kodu paylaşacağım. Bu anlatımı harflerin vs. bilgisayar tarafından tanındığı ASCII numaraları sayesinde yapacağım. ASCII demişken bu nedir? bize neden katkı sağlayacak ilk başta onlara bakalım.

ASCII Nedir?

Klavyede yazabileceğimiz ve görebildiğimiz bir çok karakter bulunmaktadır. Bunları biz günlük yaşamımızda, ödevlerimizde, projelerimizde, işte vs. kullanmaktayız. Bizler tarafından bilinen karakterlerdir bunlar. Ama bunu biz anlarız böyle, bilgisayar bu karakterin aslında böyle bir şey olduğundan habersizdir. Örneğin bir bilgisayar ''A'' karakterinin ne anlama geldiğini bilemez bu karakteri bilgisayar içinde ikili basamak dizisiyle temsil edilir. Bu karakterlerin her biri 8 bitlik dizi kodlarına ayrılmıştır.


Bu tablomuzu üstte görebilirsiniz. İşte bu tabloda gördükleriniz üzerinden bir yazıyı apayrı bir çıktıyla değiştirebilirsiniz ve bu algoritmanın tersini kullanarakta yine aynı şekilde eski haline döndürebilirsiniz. Böylece karşı taraf için sizden ne dediğini anlamasını zorlaştıracak kelimeler ortaya çıkabilir. Tabi bu iş veriyi şifreleme işlemine giriyor ve bu konu hakkında birçok algoritma ve işleyiş bulunmaktadır. Biz burada o kadar detaylı bir şekilde işlemeyeceğiz bunu, kısaca iki farklı dönüştürücü kod ile durumu anlatmayı planlıyorum. 

Şifreleme Kısmı

Evet ilk başta bir yazıyı alıp üzerinde ascii değerlerinde oynamalar yapalım, burada kullanacağımız string -merhaba_ben_mehmet_faruk- olsun. 

#index degeri cift olana 2 ekle, tek olana 1 ekle yöntemiyle
#yapacağız, böylelikle daha karmaşık hale getirelim dedim.
print("Şifreyi basit bir kriptolama yontemi ile degistirecegiz")
b=[]
c=0
a = "merhaba_ben_mehmet_faruk"
for item in a:
if c%2==0:
x = ord(a[c]) + 2
y = chr(x)
b.append(y)
c+=1
else:
x = ord(a[c]) -1
y = chr(x)
b.append(y)
c+=1
print(">>Duzenlendi>>")
print("".join(b))

Tabi burada bu yazıyı farklılaştırmış olacak ve çıktımız şu şekilde olacaktır, gösterelim;


Bunu şuanda bir sisteme göndermiş olsaydık veri böyle görünecekti, yani hiçbir anlam çıkarılmayacak türden bir yazı var karşınızda. Tabi bir bilgisayarcı için bunu tahmin etmek çokta zor değil.
Şimdi burada dizide bulunan elemanları diğer koda aktaralım, onu direkt olarak şöyle alabiliriz,

...gerisi yazmayalım
print(">>Duzenlendi>>")
print("".join(b))
print(b)

print(b) ile dizimizi görebiliriz.


Şimdi bu çıktıyı diğer koda aktaralım.

Şifrelenmiş Veriyi Geri Döndürme Kısmı

#sifrelenmis veriyi geri eski haline getirme
print("Şifrenin degistirilmis halini duzeltme")
b=['o', 'd', 't', 'g', 'c', 'a', 'c', '^', 'd', 'd', 'p', '^', 'o', 'd', 'j', 'l', 'g', 's', 'a', 'e', 'c', 'q', 'w', 'j']
c=0
d=[]
print("".join(b))

for item in b:
if c%2==0:
x = ord(b[c]) - 2
#print(x)
#y = chr(x)
d.append(chr(x))
#print(y)
c+=1
else:
x = ord(b[c]) + 1
#print(x)
y = chr(x)
d.append(y)
#print(y)
c+=1

print(">>Duzenlendi>>")
print("".join(d))

Şimdi geri döndürme kodumuzu gördünüz, burada bir önceki yapılan işlemin tam tersi yapılmaktadır. Böylelikle azda olsa veriyi güvenlikli bir şekilde iletmiş olduk, tabi bunu online bir ortamda yapmış olsaydık. Şimdi çıktımızı gösterelim size. 


Evet çıktımız bu şekildedir. Bunu sizlere göstererek en azından sistemi anlatmaya çalıştığımı umuyorum. Tabi işler normalde bu kadar basit şekilde olmuyor gerçek hayatta, bilgisayarların hesaplama süresini aşacak derecede zorlayan algoritmalar geliştirilmekte, farklı farklı metodlar uygulanmakta bu alanda. Sizlerinde bu alanda merakı var ise bu konu hakkında daha detaylı araştırma yapması gerekmektedir. Bugünlük yazımız bu kadar arkadaşlar, iyi çalışmalar dilerim.

Yorumlar

Bu blogdaki popüler yayınlar

Python ile Turtle Kütüphanesiyle Çizim Denemesi 2

Girdimize en yakın palindrom değeri bulan program (Python3 ile)

Python ile Yazıyı Piramit Gibi Çizdirme