Delphi - Adataink védelme átírás ellen

forráskód letöltése
Ha egy alkalmazásban sztring típusú adatokkal dolgozunk, akkor a program lefordítása után az exe fájlban megtalálhatóak ezek a sztringek. Ezeket például egy HexaEditor programmal bárki átírhatja. Ez a probléma különösen akkor válik kínossá, ha mondjuk a névjegyablakunkon valaki átírja a nevünket. Ebben a példában bemutatunk egy védelmi lehetőséget, amely megnehezíti adataink átírását.
A mellékelt példaprogram megnyitása előtt a CheckSum.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A problémát ellenőrzőösszegek használatával küszöböljük ki. Egy nagyon egyszerű algoritmus segítségével összeadjuk a sztring egyes karaktereinek ASCII kódjait. Így keletkezik egy ellenőrzőösszeg, amelyet a Form OnCreate eseményében fel is használunk.
A mellékelt komponens segít abban, hogy egy megadott szövegnek az ellenőrzőösszegét azonnal megtudhassuk, még szerkesztési időben.
A Text property-ben kell megadnunk az ellenőrizendő szöveget. Ahogy a Text property értékét beállítottuk, a CheckSum proeprty-ben azonnal láthatóvá is válik az érték.
A komponens SetText eljárásában számoljuk ki az összeget, egy egyszerű for ciklus segítségével.
c:=0;
for i:=1 to Length(FText) do
  c:=c+Ord(FText[i]);
FCheckSum:=c;
Ha vesszük például a mellékelt példa Label2.Caption értékét, akkor a Form OnCreate eseményébe beépíthetünk egy védelmet.
c:=0;
for i:=1 to Length(Label2.Caption) do
  c:=c+Ord(Label2.Caption[i]);
if c<>1576 then
  Application.Terminate;
Ha az ellenőrzőösszeg nem jó, akkor leállítjuk az alkalmazást. Ebben az esetben is át lehet írni a sztringet, de csak akkor, ha az új karakterek ugyanazt az ellenőrzőösszeget adják.
Még biztonságosabbá tehetjük a rendszert, ha egy szöveghez több értéket is hozzárendelünk. Például végezhetünk egy újabb ellenőrzést az 5..9 karakterekre, a szöveg belsejében.