Yazan : Şadi Evren ŞEKER

Veri güvenliğinde kullanılan en basit şifreleme algoritmalarından birisidir. Şifreleme ailesi olarak blok şifreleme (Block Cipher) ailesinden simetrik şifreleme olarak kabul edilebilecek olan bu şifreleme algoritmasında mesaj önce verilen blok boyutunda parçalara bölünür. Ardından her parça anahtar ile Yahut (XOR) işlemine tabi tutulur. Çıkan sonuçlar birleştirilerek şifreli mesaj elde edilir.

Alıcı taraf mesajı açmak için yine blok boyutu kadar parçalara böler ve anahtar ile ikinci kere Yahut(XOR) işlemine tabi tutar. Sonuçta çıkan mesaj orjinal mesajdır.

Yukarıdaki bu anlatılanları yapan kod aşağıdaki şekilde yazılabilir:

	#include<iostream>
	using namespace std;

	int main(void)
	{
		char my_string[17]="Sadi Evren SEKER";
		char my_key[17]="ABCDEFGHIJ123456";

		for(int count=0; count<16; count++)
		{
			my_string[count]=my_string[count]^my_key[count];
			cout << my_string[count];
		}
	}

Yukarıdaki kodda, mesaj 16’lık parçalara bölünerek her parçalsının her biti ayrı ayrı Yahut (XOR) işlemine tabi tutulmaktadır. Burada dikkat edilebilecek bir husus şifreleme işlemindeki mesajın bir dizgi (string) oluşu ve bir dizginin aslında bir karakter dizisi olduğudur. Dolayısıyla karakter dizisini karakter karakter işleyen yukarıdaki döngüde her karakter değeri önce integer değere çevrilmiş ve ardından XOR işlemine tabi tutulmuştur.

Sonuçlar hesaplanır hesaplanmaz ekrana yazılmıştır.

Yahut işlemi (XOR Operator) bilindiği üzere iki kere aynı mesaj ile uygulandığında etkisini kaybeder.

Bu durumu aşağıdaki tablodan görebiliriz.

A B C D
-------
0 0 0 0
0 1 1 0
1 0 1 1
1 1 0 1

Yukarıdaki tabloda giriş olarak A ve B değerlerinin bulunduğunu düşünürsek.

C = A ^ B ( A ile B giridilerinin yahut işlemi)

D = C ^ B işlemi yapılmıştır.

Aslında yapılan işlem D = A ^ B ^ B işlemi olarak yorumlanabilir.

Dikkat edileceği üzere D ile A değeri her durumda aynı çıkmaktadır. Buradan da anlaşılacağı üzere bir bilginin iki kere aynı değer ile Yahut işlemine tabi tutulması sonuçta bilginin aynen geri elde edilmesi demektir.

İşte yahut şifrelemesi de burada öncelike C değerini elde edip karşı tarafa yollamakta ve alıcı taraf C değerinin üzerine anahtar olarak önceden bildiği B değerini yahutlamaktadır. Sonuçta orjinal A değerini geri elde etmektedir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir