21.07.2014

Matlab Kod Örneği - 2 (Kriptolu İletişim)

Serinin ikinci örneği.

Sıradan kriptolu iletişim oluşturmak.

Örneğin biriyle mailleşmektesiniz ancak yazdıklarınızın yalnızca karşıki ile aranızda kalmasını istiyorsunuz. Öyleki yazdıklarınız görünse bile mesajınızın okunmasını istemiyorsunuz. Şöyle yapabiliriz:

1- Çözülmesi çok da basit olmayan bir kripto oluşturacağız.
2- Mesajımızı şifreli mesaja çevirecek algoritmayı yazacağız.
3- Şifreli mesajı mesaja çevirecek algoritmayı oluşturacağız.
4. Bu iki algoritmayı çalıştıracak programı oluşturacağız.




Öncelikle ben bir kripto oluşturdum.

Kriptomuz girdiğimiz mesajın her üç harfinden birini ASCII kod tablosunda farklı yerleyere atayacak. Benimkinde 1. harfi 4, 2. harfi 5, 3. harfi 3 ileri atayacak ve bu 4., 5. ve sonraki harflerde aynı sırayla takip edecek. Yalnız oluşturduğum kripto yalnızca İngiliz karakterlerinde tam randımanla çalışacak.

Bunun için oluşturduğum şifreleme algoritması şöyle:

Tabi ki bir de çözümleme algoritması gerekiyordu. O da şifrelemenin tam tersini yapacak:

Bu algoritmayı kafanıza göre şekillendirebilir ve daha spesifik ve kompleks boyutlara çıkarabilirsiniz.

Algoritmanın çalışması için bir de kullanıcı arayüzü tasarladım ve kullanıcı arayüzünde butonun Callback menüsüne hazırladığım kodu girdim.

Hazırladığım kod aşağıdaki gibidir:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
mesaj=get(handles.edit1,'String');
% girdiye yazılmış olan mesajın sözcük
% özelliğini mesaj değişkenine aktar.
n=length(mesaj);
% mesaj değişkeninin uzunluğunu
% n değişkenine aktar
if get(handles.popupmenu1,'Value') == 2
% açılır listede şifreleme işaretliyse
for i = 1:n
% i değişkenini 1'den n'ye kadar saydır.
    if mod(i,3) == 0
% i değişkeninin 3' bölümünden kalan 0 ise
        mesaj(i)=mesaj(i)+3;
% mesajın i. harfini 3 ileri at   
    elseif mod(i,3) == 1
% i değişkeninin 3' bölümünden kalan 1 ise
        mesaj(i)=mesaj(i)+4;
% mesajın i. harfini 4 ileri at 
    else
% i değişkeninin 3' bölümünden kalan 2 ise
        mesaj(i)=mesaj(i)+5;
% mesajın i. harfini 5 ileri at 
    end
% şartı sonlandır.
end
% döngüyü sonlandır.
set(handles.edit2,'String',mesaj);
% yeni mesajı çıktıya aktar.
elseif get(handles.popupmenu1,'Value') == 3
% açılır listede çözümleme işaretliyse
for i = 1:n
% i değişkenini 1'den n'ye kadar saydır.
    if mod(i,3) == 0
% i değişkeninin 3' bölümünden kalan 0 ise
        mesaj(i)=mesaj(i)-3;
% mesajın i. harfini 3 geri çek 
    elseif mod(i,3) == 1
% i değişkeninin 3' bölümünden kalan 1 ise  
        mesaj(i)=mesaj(i)-4;
% mesajın i. harfini 4 geri çek
    else
% i değişkeninin 3' bölümünden kalan 2 ise
        mesaj(i)=mesaj(i)-5;
% mesajın i. harfini 5 geri çek
    end
% şartı sonlandır.
end
% döngüyü sonlandır.
set(handles.edit2,'String',mesaj);
% yeni mesajı çıktıya aktar.
else
% açılır pencerede bir şey seçilmmişse
    set(handles.edit2,'String','Bir seçim yapınız.');
% çıktıya uyarıyı yazdır.
end
% şartı sonlandır.

Ve çalışırken...