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);}