Sayfa: [1]   Aşağı git
  Yazdır  
Gönderen Konu: DrCrypt Şifreleme Algoritması  (Okunma Sayısı 673 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
JoKeR
Rock On Roal
Administrator
*

Karma: 112
Offline Offline

Cinsiyet: Bay
Mesaj Sayısı: 1291



Üyelik Bilgileri
« : 02 Nisan 2008, 10:54:13 »

Ü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.

Kod:
[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]

 
Logged

10 Konusu Olmayan Soru Sormasın Soruları Cevaplanmayacak...

Linklerin Görülmesine Izin Verilmiyor
Linki Görebilmek Için Üye Ol veya Giris Yap
droctopus
Ziyaretçi
« Yanıtla #1 : 04 Haziran 2008, 15:56:58 »

DrCrypt yeni versiyonu ve blog'u ile daha ayrıntılı olarak sizlerle !

REKLAM YASAK ARKADASIM ... LİNK EDİTLENDİ
 
« Son Düzenleme: 04 Haziran 2008, 18:10:51 Gönderen: JoKeR » Logged
Sayfa: [1]   Yukarı git
  Yazdır  
GoogleTagged

 
Gitmek istediğiniz yer: