Üretimi Ve Geri Üretimi Zor 4 Anahtar İle Bilgiyi XOR'lar Ve Trilyonlarca İhtimal Ortaya Çıkarır. Buna Rağmen "Kolay" ve Simetrik Bir Şifreleme Sistemidir. Şifreye Bağlı Bir Sayı Gerektirir Ve Bu Sayı Herhangi Bir Yöntemle Yapılabileceği Gibi Rastgele Verilebilir. [FONT=Arial][SIZE=2]unit DrCrypt;
interface
uses SysUtils;
{
DrCrypter Simetrik Şifreleme Algoritması (v.0.1 Beta)
* * * * * * * * * * * * * * * * * * * * *
> 2007-2008 NükleerYazılım.com Tarafından GPL Lisansı Altında Dağıtılan Bir Projedir.
Algoritmanın Detayları Aşağıdadır....
DrCrypt Algoritması
* * * * * * * * * * *
1) - Çok Büyük Ve Şifreye Bağlı Bir Sayı Üretilir. (Farklı Bir Algoritma Kullanılabilir...)
2) - Bu Sayının Sayı Değeri Bulunur. (Örn. 54678454 = 5+4+6+7+8+4+5+4=43) [A]
3) - Bu Sayının Sıfırlar Hariç Çarpım İle Sayı Değeri Bulunur.
(Örn. 54678454 = 5*4*6*7*8*4*5*4=537600=5*3*7*6=630)[B]
4)- Bu Sayının Sahip Olduğu Tüm Asal Sayıların Sayısı Bulunur. [C]
5) - Bu Sayının Sahip Olduğu [A] ile Aralarında Asal Tüm Sayıların Toplamı Bulunur. [D]
6) - Tüm Bu Sayılar Aşağıdaki Sıra İle Bir Kez Shl(Shift Bits Left) Uygulanır.
Örn...
[0] = [A] Shl [B] | [3] = [B] Shl [A] | [6] = [C] Shl [A] | [9] = [D] Shl [A]
[1] = [A] Shl [C] | [4] = [B] Shl [C] | [7] = [C] Shl [B] | [A] = [D] Shl [B]
[2] = [A] Shl [D] | [5] = [B] Shl [D] | [8] = [C] Shl [D] | [B] = [D] Shl [C]
7) - Bu Durumda [T] Dörtgeni Oluşur...
[0][1][2]
[3][4][5]
[6][7][8]
[9][X][Y]
8) - [T] Dörtgeninin Tüm Elemanları Not'lanır Ve Mutlak Değerleri Alınır...
9)- [T] Dörtgeninin Tüm Elemanlarına Aşağıdaki İşlem Uygulanır...
a)- Modüler Elemanlar 0'a Bölme Hatasını Engellemek İçin 1 Arttırılır.
[A] = [A] + 1 | [B] = [B] + 1 | [C] = [C] + 1 | [D] = [D] + 1
b)- [T] Dörtgeninin Elemanlarına Sayı mod [n] işleminin sonucu eklenir.
[0] = [0] + (Sayı Mod [A]);
[1] = [1] + (Sayı Mod [B]);
[2] = [2] + (Sayı Mod [C]);
[3] = [3] + (Sayı Mod [D]);
[4] = [4] + (Sayı Mod [A]);
[5] = [5] + (Sayı Mod [B]);
[6] = [6] + (Sayı Mod [C]);
[7] = [7] + (Sayı Mod [D]);
[8] = [8] + (Sayı Mod [A]);
[9] = [9] + (Sayı Mod [B]);
[X] = [X] + (Sayı Mod [C]);
[Y] = [Y] + (Sayı Mod [D]);
10)- [T] Kübü Bu Aşamada Tamamen Oluşmuştur. Şifreleme Ve Çözme Bu Kübün Elemanları İle Yapılır.
11)- Şifreleme İse Aşağıdaki Yöntemle Yapılır.
a)- İlk Önce Çapraz Operatörler Hesaplanır...
[0][1][2]
[3][4][5]
[6][7][8]
[9][X][Y]
[M]Operatör 1 = [1] + ([0] * [4] Mod [8]);
[N]Operatör 2 = [2] + ([3] * [7] Mod [Y]);
[O]Operatör 3 = [2] + ([2] * [4] Mod [6]);
[P]Operatör 4 = [1] + ([5] * [7] Mod [9]);
b)- Bu Çarpaz [M],[N],[O],[P] Operatörleri Şifrelemede Kullanılacak Olan Sayılardır.
Şifreleme Ise Şu Şekilde Yapılır...
> (Bilgi Xor [M] Xor [N] Xor [O] Xor [P])
Çözümleme Ise Şu Şekilde Yapılır...
> (Bilgi Xor [M] Xor [N] Xor [O] Xor [P])
}
type DrCrypter = class(TObject)
public
function ToplamaliSayiDegeriBul(Sayi:Integer):Integer; // [A]
function CarpmaliSayiDegeriBul(Sayi:Integer):Integer; // [B]
function AsalSayilarinSayisiniBul(Sayi:Integer):Integer; // [C]
function A_ILE_AralarindaAsalSayilariBul(A:Integer;Sayi:Integer):Integer; // [D]
function T_Dortgeni_0(Sayi,A,B,C,D:Integer):Integer; // [0]
function T_Dortgeni_1(Sayi,A,B,C,D:Integer):Integer; // [1]
function T_Dortgeni_2(Sayi,A,B,C,D:Integer):Integer; // [2]
function T_Dortgeni_3(Sayi,A,B,C,D:Integer):Integer; // [3]
function T_Dortgeni_4(Sayi,A,B,C,D:Integer):Integer; // [4]
function T_Dortgeni_5(Sayi,A,B,C,D:Integer):Integer; // [5]
function T_Dortgeni_6(Sayi,A,B,C,D:Integer):Integer; // [6]
function T_Dortgeni_7(Sayi,A,B,C,D:Integer):Integer; // [7]
function T_Dortgeni_8(Sayi,A,B,C,D:Integer):Integer; // [8]
function T_Dortgeni_9(Sayi,A,B,C,D:Integer):Integer; // [9]
function T_Dortgeni_X(Sayi,A,B,C,D:Integer):Integer; // [X]
function T_Dortgeni_Y(Sayi,A,B,C,D:Integer):Integer; // [Y]
function CaprazOperatorM(_1,_0,_4,_8:Integer):Integer; // [M]
function CaprazOperatorN(_2,_3,_7,_Y:Integer):Integer; // [N]
function CaprazOperatorO(_2,_4,_6,_X:Integer):Integer; // [O]
function CaprazOperatorP(_1,_5,_7,_9:Integer):Integer; // [P]
published
function Sifrele(M,N,O,P:Integer;Bilgi:Integer):Integer;
function Coz(M,N,O,P:Integer;Bilgi:Integer):Integer;
end;
implementation
function DrCrypter.ToplamaliSayiDegeriBul(Sayi:Integer):Integer; // [A]
var
tmpStr : String;
tmpInt : Integer;
i : Integer;
begin
tmpInt := 0;
tmpStr := IntToStr(Sayi);
for I := 1 to Length(tmpStr) do
begin
tmpInt := tmpInt + StrToInt(tmpStr[i]);
end;
Result := tmpInt;
end;
function DrCrypter.CarpmaliSayiDegeriBul(Sayi:Integer):Integer; // [B]
var
tmpStr : String;
tmpInt : Integer;
i : Integer;
begin
tmpInt := 1;
tmpStr := IntToStr(Sayi);
for I := 1 to Length(tmpStr) do
begin
if StrToInt(tmpStr[i]) <> 0 then
begin
tmpInt := tmpInt * StrToInt(tmpStr[i]);
end;
end;
Result := tmpInt;
end;
function DrCrypter.AsalSayilarinSayisiniBul(Sayi:Integer):Integer; // [C]
var
i:integer;
AsalSayilarinToplami:Integer;
begin
AsalSayilarinToplami:=0;
for I := 1 to Sayi do
begin
if Frac(I / 2) <> 0 then
begin
Inc(AsalSayilarinToplami);
end;
end;
Result := AsalSayilarinToplami;
end;
function DrCrypter.A_ILE_AralarindaAsalSayilariBul(A:Integer;Sayi:Integer):Integer; // [D]
var
I: Integer;
p,q:Real;
AralarindaAsallar : Integer;
begin
AralarindaAsallar:=0;
for I := 1 to Sayi do
begin
p:=Frac(i / 2);
q:=Frac(A / 2);
if ((p <> 0) And (q <> 0)) then
begin
Inc(AralarindaAsallar);
end;
end;
Result := AralarindaAsallar;
end;
function DrCrypter.T_Dortgeni_0(Sayi,A,B,C,D:Integer):Integer; begin Result := A Shl B; A := A + 1; Result := Abs(Not Result) + (Sayi Mod A); end; // [0]
function DrCrypter.T_Dortgeni_1(Sayi,A,B,C,D:Integer):Integer; begin Result := A Shl C; B := B + 1; Result := Abs(Not Result) + (Sayi Mod B); end; // [1]
function DrCrypter.T_Dortgeni_2(Sayi,A,B,C,D:Integer):Integer; begin Result := A Shl D; C := C + 1; Result := Abs(Not Result) + (Sayi Mod C); end; // [2]
function DrCrypter.T_Dortgeni_3(Sayi,A,B,C,D:Integer):Integer; begin Result := B Shl A; D := A + 1; Result := Abs(Not Result) + (Sayi Mod D); end; // [3]
function DrCrypter.T_Dortgeni_4(Sayi,A,B,C,D:Integer):Integer; begin Result := B Shl C; A := A + 1; Result := Abs(Not Result) + (Sayi Mod A); end; // [4]
function DrCrypter.T_Dortgeni_5(Sayi,A,B,C,D:Integer):Integer; begin Result := B Shl D; B := B + 1; Result := Abs(Not Result) + (Sayi Mod B); end; // [5]
function DrCrypter.T_Dortgeni_6(Sayi,A,B,C,D:Integer):Integer; begin Result := C Shl A; C := C + 1; Result := Abs(Not Result) + (Sayi Mod C); end; // [6]
function DrCrypter.T_Dortgeni_7(Sayi,A,B,C,D:Integer):Integer; begin Result := C Shl B; D := D + 1; Result := Abs(Not Result) + (Sayi Mod D); end; // [7]
function DrCrypter.T_Dortgeni_8(Sayi,A,B,C,D:Integer):Integer; begin Result := C Shl D; A := A + 1; Result := Abs(Not Result) + (Sayi Mod A); end; // [8]
function DrCrypter.T_Dortgeni_9(Sayi,A,B,C,D:Integer):Integer; begin Result := D Shl A; B := B + 1; Result := Abs(Not Result) + (Sayi Mod B); end; // [9]
function DrCrypter.T_Dortgeni_X(Sayi,A,B,C,D:Integer):Integer; begin Result := D Shl B; C := C + 1; Result := Abs(Not Result) + (Sayi Mod C); end; // [X]
function DrCrypter.T_Dortgeni_Y(Sayi,A,B,C,D:Integer):Integer; begin Result := D Shl C; D := D + 1; Result := Abs(Not Result) + (Sayi Mod D); end; // [Y]
function DrCrypter.CaprazOperatorM(_1,_0,_4,_8:Integer):Integer; var a,b :Integer; begin a:= _0 * _4; b := a mod _8; Result := b + _1; end; // M
function DrCrypter.CaprazOperatorN(_2,_3,_7,_Y:Integer):Integer; var a,b :Integer; begin a:= _3 * _7; b := a mod _Y; Result := b + _2; end; // N
function DrCrypter.CaprazOperatorO(_2,_4,_6,_X:Integer):Integer; var a,b :Integer; begin a:= _2 * _4; b := a mod _6; Result := b + _2; end; // O
function DrCrypter.CaprazOperatorP(_1,_5,_7,_9:Integer):Integer; var a,b :Integer; begin a:= _5 * _7; b := a mod _9; Result := b + _1; end; // P
function DrCrypter.Sifrele(M,N,O,P:Integer;Bilgi:Integer):Integer;
begin
Result := Bilgi Xor M Xor N Xor O Xor P;
end;
function DrCrypter.Coz(M,N,O,P:Integer;Bilgi:Integer):Integer;
begin
Result := Bilgi Xor M Xor N Xor O Xor P;
end;
end.[/SIZE][/FONT]