C# - Jelszó titkosított tárolása SHA1, MD5 algoritmus által

Felhasználói azonosítás 3. rész

forráskód letöltése
Mit sem ér webes rendszerünk felhasználói azonosítása, ha a felhasználói nevekhez tartozó jelszavakat titkosítás nélkül tároljuk és valamilyen körülmények között a tárolt adatok illetéktelen kezekbe kerülnek. Rendszerünk biztonságát tovább növelhetjük tehát, ha tikosítjuk a jelszavakat és úgy tároljuk azokat.
Ebben az esetben is segítséget kapunk az ASP.NET-es alkalmazásunk fejlesztésénél: nekünk nem is kell foglalkozni a jelszavak visszafejtésével, ellenőrzésével. Egyszerűen csak meg kell adnunk, hogy melyik felhasználóhoz milyen jelszó tartozik (természetesen ezt már kódolva) és a többit intézi a programunk.
Többek között a web.config állományba is felsorolhatjuk a felhasználói neveket és a hozzájuk tartozó, immár kódolt jelszavakat. Természetesen ezen adatokat tetszés szerint tárolhatjuk máshol is, például egy SQL táblában. Most válasszuk az egyszerűség kedvéért a web.config állományt.
Itt a credentials szekcióban adhatjuk meg a jelszó tárolásának módját, melynek három típusa létezik:
Mód Leírás
clear nincs kódolás, a szöveg bárki által olvasható
SHA1 SHA1 titkosítású jelszavak
MD5 MD5 titkosítású jelszavak.
Ha ezt kiválasztottuk, akkor máris felsorolhatjuk az érvényes felhasználói neveket és a hozzájuk tartozó jelszavakat, melyek egy-egy user bejegyzésben kaphatnak helyet:
    <authentication mode="Forms" > 
      <forms loginUrl="Login.aspx" protection="All">
        <credentials passwordFormat="SHA1">
          <user name="software" password="2DBC2FD2358E1EA1B7A6BC08EA647B9A337AC92D"/>      
        </credentials>
      </forms>
    </authentication>
A mellékelt példa jelenleg csak a „software” bejelentkező nevet és az „online” jelszót fogadja el.
Joggal felmerül a kérdés, hogy miből következik az, hogy az „online” jelszót titkosítva, 2DBC2FD2358E1EA1B7A6BC08EA647B9A337AC92D-nek kell írni? A jelszavak titkosításához is kapunk segítséget, mivel nyilván fejből ennek meghatározására senki nem lenne képes. Adott a FormsAuthentication osztály, melynek van egy HashPasswordForStoringInConfigFile nevű függvénye, mely segíthet bennünket ebben a feladatban.
HashPasswordForStoringInConfigFile
Osztály: FormsAuthentication
public static string HashPasswordForStoringInConfigFile(
string password,
string passwordFormat
);
A HashPasswordForStoringInConfigFile függvény segítségével kódolhatunk szöveget SHA1, vagy MD5 titkosítással.
Paraméterek
string password
A kódolandó szöveg.
string passwordFormat
A titkosítás módja, mely sha1, vagy md5 lehet.
Visszatérési érték
A kódolt szöveget kapjuk vissza sztringként.
Példa
    private void Button1_Click(object sender, System.EventArgs e)
    {
      Label1.Text=FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox1.Text, "sha1");
    }

Felhasználói azonosítás cikksorozat