C# - 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ók 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 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 Load eseményében fel is használunk.
Készítettünk egy függvényt, amely egy megadott sztringhez kiszámolja az ellenőrző összeget.
public int GetCheckSum(string s)
A függvényben lefutó algoritmus nagyon egyszerű.
int c = 0;
if (s.Length > 0)
  for (int i = 0; i < s.Length; i++)
    c += s[i];
return c;
Ha vesszük például a mellékelt példa label2.Text értékét, akkor a Form Load eseményébe beépíthetünk egy védelmet.
if (GetCheckSum(label2.Text) != 1576)
  Close();
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. Ez viszont nehéz.
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.