Kod
var GecerliKarakterler:String= '0123456789ABCÇDEFGHJKLMNÖPRSŞTUÜVYZabcçdefghijkmnöprsştuüvyz'; LenGecerliKarakterler:Integer; Anahtar:String='vArTEkM'; LenAnahtar:Integer; procedure KodKontrol; var i,j:Integer; begin //yükleme esnasında değerler ayarlanır LenGecerliKarakterler:=Length(GecerliKarakterler); for i:=1 to LenGecerliKarakterler-1 do for j:=i+1 to LenGecerliKarakterler do if GecerliKarakterler[i]=GecerliKarakterler[j] then raise Exception.CreateFmt('%d ve %d. karakterler (%s) aynıdır',[i,j,GecerliKarakterler[i]]); LenAnahtar:=Length(Anahtar); for i:=1 to LenAnahtar do if Pos(Anahtar[i],GecerliKarakterler)<1 then raise Exception.CreateFmt('%d=%s karakteri geçersizdir',[i,Anahtar[i]]); end; function Tersle(const S:String):String; var i,n:Integer; C:Char; begin Result:=S; n:=Length(Result); i:=1; while (i<n) do begin C:=Result[i]; Result[i]:=Result[n]; Result[n]:=C; Inc(i); Dec(n); end; end; function Kodla(const S:String):String; var AraKey:Byte; i,j,n,Len:Integer; C,K:Char; B,D:Byte; begin Result:=Tersle(S); Len:=Length(Result); j:=0; for i:=1 to Len do begin Inc(j); if j>LenAnahtar then j:=1; C:=Result[i];B:=Pos(C,GecerliKarakterler); if B<1 then raise Exception.CreateFmt('%d=%s karakteri geçersizdir',[i,C]); K:=Anahtar[j];D:=Pos(K,GecerliKarakterler); AraKey:=B + D; n:=AraKey mod LenGecerliKarakterler; if n=0 then n:=LenGecerliKarakterler; Result[i]:=GecerliKarakterler[n]; end; end; function KodCoz(const S:String):String; var AraKey:Byte; i,j,n,Len:Integer; C,K:Char; B,D:Byte; begin Result:=S; Len:=Length(Result); j:=0; for i:=1 to Len do begin Inc(j); if j>LenAnahtar then j:=1; C:=Result[i];B:=Pos(C,GecerliKarakterler); if B<1 then raise Exception.CreateFmt('%d=%s karakteri geçersizdir',[i,C]); K:=Anahtar[j];D:=Pos(K,GecerliKarakterler); AraKey:=LenGecerliKarakterler + B - D; n:=AraKey mod LenGecerliKarakterler; if n=0 then n:=LenGecerliKarakterler; Result[i]:=GecerliKarakterler[n]; end; Result:=Tersle(Result); end; initialization KodKontrol; //kullanmadan önce ilk değerler hazırlanması muhakkak sağlanmalı end. {Bilgiyi şifreleme ve şifrelenmiş bilgiyi çözme genelde kullanıcı şifreleri kaydında kullanılabilir. Yerine koyma metodundan daha iyi olan basit bir uygulama. 'Anahtar' ve 'GecerliKarakterler' içindeki bilgilere müdahale ederek kendinize özel algoritması olan basit düzeyde bir şifreleme tekniğine sahip olabilirsiniz. Şifreleri olduğu gibi veritabanına kayıt etmekten daha iyidir :) Dikkat..: -KodKontrol prosedürü kullanımdan önce muhakkak çalıştırılmalı. -GecerliKarakterler değişkenine kullanılması şart olan karakterlerin hepsi atanmalı ve aynı karakterden asla 2 tane olmamalı -Anahtar değişkenine (GecerliKarakterler içerisinde bulunan) kendi belirlediğiniz karakterleri atamalısınız. Örnek..:S:=Kodla(edtSifre.Text); ..... St:=KodCoz(S);}