HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Jelszógeneráló osztály létrehozása


Példaprogram letöltése

9694 bájt

Jelszavak generálásának számtalan módja létezhet. Cikkünkben létrehoztunk egy osztályt, mely az ASCII kódtábla kis- és nagybetűinek, valamint számainak felhasználásával generál egy jelszót. A jelszónak megadható paraméterként, hogy hossza milyen határok közé essen, és hány darab szám lehet benne, valamint, hogy lehet-e benne nagybetű, vagy sem.

A bevezetőben említett feltételek megadásához létrehoztunk néhány property-t a PasswordClass nevű osztályhoz. Ezek értékeit a Form-ra helyezett TextBox kontrolokban adjuk meg. A property-k sorban a következők:
  • Passport: tartalmazza a generált jelszót, így csak olvasható.
  • AllowUpperCase: logikai értéke tartalmazza, hogy megengedett-e a nagybetűk előfordulása a jelszóban, vagy sem.
  • MinimumSize: megadhatjuk, hogy mekkora legyen a jelszó minimális hossza.
  • MaximumSize: megadhatjuk, hogy mekkora legyen a jelszó maximális hossza.
  • MaximumDigits: megadhatjuk, hogy mekkora legyen a jelszóban megengedett numerikus karakterszám.
A jelszó tárolásához létre kellett hoznunk egy StringBuilder objektumot:
private StringBuilder pwdBuffer;
...
public PasswordClass() 
{
  pwdBuffer = new StringBuilder();            
}
Létrehoztunk egy enumerátort a megengedett karakterek ASCII kódjainak tárolásához. Az azonos csoportba tartozó elemek a kódtáblában egymást követő kódokkal rendelkeznek, csak az egyes csoportok találhatók elszórtan a táblában. Ennek feloldására a felsorolt típus elemei páronként tartalmazzák az egyes csoportok legelső, és legutolsó elemeinek kódjait:
public enum Ranges
{
  DigitsRangeDown = 48, DigitsRangeUp = 57,
  UppercaseRangeDown = 65, UppercaseRangeUp = 90,
  LowercaseRangeDown = 97, LowercaseRangeUp = 122
}
A Password property lekérdezéséhez egy Generate nevű saját metódus tartozik, melyben képezzük az adott feltételekkel rendelkező jelszót. A metódus visszatérési értéke a generált jelszó.
public string Password 
{
  get 
  {
    return Generate();
  }
}
A Generate metódus felépítése a következő:
protected virtual string Generate() 
{
  rand = new Random();
  int res = 0;
  pwdBuffer.Capacity = this.MaximumSize * 2;
A metódusban először a maximális hossz kétszerese terjedelemben szúrunk be karaktereket a jelszó karakterláncba, attól függően, hogy a véletlenszám-generátor milyen értéket ad vissza 0 és 3 között:
  while ( length < max ) 
  {
    ...
    genChar = this.rand.Next(0, 3);
    ...
    switch (genChar) 
    {
      case 0: GenerateCharacter(Ranges.LowercaseRangeDown, Ranges.LowercaseRangeUp);
      ...
    }
  }
A generált értéktől függően más és más paraméter párral hívjuk meg a GenerateCharacter metódusunkat, mely a karakterlánc végéhez fűz egy újabb karaktert. A paraméterek a felsorolt típus elem-párjai, melynek eredményeképpen a megadott határok közti kódtartományba eső karakterekből fűz fel egyet a metódus a lánc végére.
A Generate metódusban meghívjuk a ControlPassword függvényünket is, mely egy végső ellenőrzést végez a jelszó karakterláncon, majd visszaadjuk a jelszót:
  ControlPassword();
  return pwdBuffer.ToString().Trim();
}
A ControlPassword metódusban végezzük el többek közt azt a műveletet, melynek eredményeképpen a jelszó csak a megengedett számú számjegyet tartalmazza.
A felhasználói felületen meg kell adni a minimális hosszt, mely nem lehet kisebb, mint 6. Meg kell adni a maximális hosszt, mely nem lehet nagyobb, mint 15. A jelölőnégyzetben pedig meg kell adni, hogy szeretnénk-e nagybetűket a karakterláncban.
Amennyiben meghatározott karakterszámú jelszót szeretnénk, egyszerűen adjunk meg azonos számokat minimális és maximális karakterszámként, a meghatározott határokon belül.

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 205. 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 |