HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Kontrol engedélyének titkosítása


Kontrolok engedélyezése 3. rész

Példaprogram letöltése

26943 bájt

A sorozat korábbi számaiban szokványos kontrol-engedélyezési mechanizmusokat valósítottunk meg. Megismerhettük többek közt, hogyan korlátozhatjuk a felhasználható kontrolok számát egy meghatározott darabszámra. Sorozatunk e számában arra mutatunk egy példát, hogy miként lehet a kontrolhoz egy titkosított licence dokumentumot kapcsolni, és ezt hogyan tudjuk ellenőrizni.

A mellékelt példa megnyitása előtt szükséges egy CLClient nevű virtuális könyvtár létrehozása, mely a példa könyvtárában található CLClient mappára mutat. Ehhez futtassa le a mellékelt CreateVD.js parancsállományt.
A mellékelt példa három projektet tartalmaz. A CLGenerator projekt alkalmazásával – szükség esetén – új titkosított licence-állományt generálhatunk. A kontrol lényege, hogy a titkosított dokumentumban a korábbi részekben megismert tartalom kerül tárolásra a DESCryptoServiceProvider osztály által szolgáltatott kódolási algoritmus szerint (Data Encryption Standard). Az ellenőrzést végző osztályban a kódolással azonos dekódoló kulccsal kell rendelkeznie a visszafejtéshez. Vizsgáljuk meg most az egyes projekteket.
CLGenerator projekt
A Windows-os alkalmazás segítségével generálhatunk egy új dokumentumot abban az esetben, ha a mellékelt állomány valamilyen okból megsérül.
A program felületén található nyomógomb megnyomásával meghívhatjuk a Generate metódust, mely a projekt mappájában található titkosításmentes tartalmat kódolja, és a webes alkalmazás licenszes mappájába másolja.
A titkosítás kulcsa mind a kódolásnál, mind pedig a dekódoló osztályban a következő:
byte[] key = new byte[] {0x35,0x46,0x42,0x32,0x38,0x31,0x46,0x36};
A kódoláskor első lépésként megalkotjuk a be- és kimeneti adatfolyamokat.
input = new FileStream("CLLibrary.CLControl.lic",FileMode.Open, FileAccess.Read, FileShare.Read);
output = new FileStream("..\\CLClient\\licenses\\CLLibrary\\1.0.0.0\\CLLibrary.CLControl.lic", FileMode.Create, FileAccess.Write, FileShare.None);
Ezt követően az algoritmust szolgáltató objektumot.
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = key;
des.IV = key;
Szükség van egy adatfolyamra, mely már a titkos adatokat tartalmazza.
ICryptoTransform desEncryptor = des.CreateEncryptor();
encrypted = new CryptoStream(output,desEncryptor,CryptoStreamMode.Write);
Végül kiírjuk a tartalmat.
...
encrypted.Write(b,0,b.Length);
CLLibrary projekt
A kontrol EncryptProvider osztálya a sorozat első részében megalkotott osztályból származik, és a GetLicenseDataStream metódust írjuk felül a titkosított tartalom visszafejtéséhez.
Az ősosztály eredeti metódusával beolvassuk az adatfolyamot.
Stream stream = base.GetLicenseDataStream(type);
Majd – ahogy tettük ezt a kódoláskor is – létrehozunk egy DESCryptoServiceProvider objektumot.
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = key;
des.IV = key;
Utolsó lépésben dekódoljuk, és a dekódolt adatfolyamot visszaadjuk.
ICryptoTransform decryptor = des.CreateDecryptor();
return new CryptoStream(stream,decryptor,CryptoStreamMode.Read);
A többi metódus változatlan, így ettől a ponttól kezdve az ellenőrzés a korábban már megismert módon folyik tovább.
A kontrol kódjában megint csak a LicenseManager osztály Validate metódusát kell hívnunk.
LicenseManager.Validate(typeof(CLControl));
CLCLient projekt
A hívó alkalmazásban hiba esetén – a dokumentum hiánya, vagy nem megfelelő tartalma miatt – itt is a WebForm2.aspx lap töltődik be.

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 733. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |