4 Temmuz 2014 Cuma

Delphi Base64 şifreleme ve şifre çözme

Merhabalar,

Sizlere bu yazımda Delphide(Mobile dahil) 64bit veri şifreleme hakında biraz bilgi vereceğim.

Öncelikle nedir bu "Base64" onuna bakalım:
Base64 ikili verilerin (İngilizce: binary data) sadece ASCII karakterlerini kullanan ortamlarda iletilmesine ve saklanmasına olanak tanıyan bir kodlama şemasıdır.

Çalışma Şekli:
Kodlama sırasında 3 baytlık veriler 6 bitlik dörtlü gruplara dağıtılırlar. Her bir 6 bitlik grup 0 ile 63 arasında bir sayı oluşturur (26=64). Aşağıdaki eşleşmeye göre her sayı bir ASCII yazdırma karakterine dönüştürülür. Bir base64 kodlamasının uzunluğu daimi olarak 4' ün katları şeklindedir, uzunluğu 4' ün katı olmayan hiçbir metin geçerli bir base64 metin değildir. base64 kodlaması bitmiş bir verinin uzunluğu 4'ün katı değilse, gerektiği kadar '=' karakteri çıktının sonuna eklenir, örneğin uzunluğu 10 olan bir çıktının sonuna '==' eklenmelidir.


Bana göre genelde kullanım amacı lamerlerin veri iletişimizideki kodları takip etmesini zorlaştırmaktır. Zaten bir acemiye göre işinde profesyonel bir yazılımcı sizin stringinizi görür görmes bunun base64 ile şifrelendiğini bir bakışta anlar ve decode etmesi 5 dakikasını alacaktır.

İşin özü ve kısacası gereksiz insanların sizin textlerinize erişi mi zorlaştırmaktır.
Eğer kimse stringimi göremesin derseniz size MD5 şifrelemeyi öneririm tek taraflıdır :)

MD5 konu linki için tıklayınız!

Kodumuza dönersek:

Uses idGlobal, IdCoderMIME;
 function Sifrele(const T:String): String;
var
  b64: TIdEncoderMIME;
begin
  b64 := TIdEncoderMIME.Create;
  try
    Result := b64.EncodeString(T, IndyTextEncoding_UTF8 )
  finally
    FreeAndNil(b64);
  end;
end;


function SifreCoz(const T:String): String;
var
  b64: TIdDecoderMIME;
begin
  b64 := TIdDecoderMIME.Create;
  try
    Result := b64.DecodeString(T, IndyTextEncoding_UTF8)
  finally
    FreeAndNil(b64);
  end;
 end;