Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Hash – introducere in criptare cu c#

O functie hash este o procedura bine definita sau o functie matematica ce converteste o cantitate de date de dimensiuni varibile intr-o secventa de date de dimensiuni mici, de obicei de dimensiune fixa, care depinde de tipul algoritmului folosit si nu de cantitatea (lungimea) datelor de intrare.

O functie hash are (ar trebui sa aiba) urmatoarea proprietate: este imposibil de gasit, prin calcule, un alt bloc de date care sa aiba aceeasi valoare hash. Cu alte cuvinte, daca pentru un bloc se date dat calculam valoarea hash, este imposibila gasirea prin intermediul unui calcul a unui alt bloc a carui valoare hash sa fie aceeasi. Functiile hash sunt folosite in semnaturi digitale sau pentru verificarea integritatii datelor.

Valoarea hash are o lungime fixa indiferent de lungimea datelor pentru care a fist calculata. Valoarea hash a doua blocuri de date ar trebui sa fie identica daca cele doua blocuri de date sunt identice. Modificari minore in blocul de date duce la aparitia de modificari nepredictibile si importante in valoarea hash calculata.

O functie Hash nu este inversabila. Este imposibila reconstituirea satelor care au generau o anumita valoare hash.

.Net, in namespace-ul System.Security.Cryptography contine o serie de clase care implementeaza divesi algoritmi hash. HashAlgorithm este o clasa abstracta, folosita ca baza pentru diversi algoritmi de hash. In exemplul pe care vreau sa il prezint aici o sa folosesc 4 clase, derivate din HashAlgorithm care implementeaza 4 lgoritmi de criptare: SHA1, SHA256, SHA384, SHA512. Aceste clase sunt: SHA1Managed, SHA256Managed, SHA384Managed si SHA512Managed.

Pentru inceput am construit un enum, in care am introdus cei 4 algoritmi pe care il voi folosi, si cu ajutorul caruia userul va putea alege functia de hash dorita:

Continue reading

spatiul de nume System.Diagnostics

   .Net Framework contine spatiul de nume System.Diagnostics, care permite interactiunea cu event log din Windows, monitorizeaza proceselor sistem din retea, monitorizeaza proceselor locale, monitorizarea performantei sistemului.

   Administratorii de sistem folosesc foarte mult Windows event log, un centralizator cu informatii despre sistemul de operare, activitatile aplicatiilor si erori. Un exemplu: sistemul de operare Windows creeaza event logs la pornire si inchidere.

   Exista 3 tipuri de event log foarte des intalnite: system (stocheaza evenimente care nu sunt legate de securitatea sistemului), securitate (stocheaza evenimente care legate de sesiunile utilizatorilor, accesul la fisiere si registri), application (stocheaza evenimente de la toate aplicatiile care nu au deja creat un event log specific).

Continue reading

Spatiul de nume System.Collection.Generic

   Conceptul de generic este unul foarte puternic in limbajul C#. O introducere in aceasta caracteristica a C# 2.0 am facut in acest articol, despre List. 

   Spatiul de nume System.Collection.Generic contine  interfete care isi au corespondente non-generice in spatiul de nume System.Collections. Acestea sunt: ICollection<T>, IComparer<T>, IDictionary<K,V>, IEnumerable<T>, IEnumerator<T>, IEqualityComparer(T), IList<T>.

   In ceea ce priveste clasele din cele doua spatii de nume, o corespondenta ar fi:

Generic NonGeneric
Collection<T> CollectionBase
Comparer<T> Comparer
Dictionary<K,V> Hashtable
List<T> ArrayList
SortedDictionary<K,V> SortedList
Stack<T> Stack
Queue<T> Queue
ReadOnlyCollection<T> ReadOnlyCollectionBase

   Reamintim ca despre clasa Dictionary<K,V> am scris in acest articol.

Continue reading

Inserarea unui script in pagina din asp.net

Un post scurt si la obiect acum, despre cum se poate executa un cod javascript in browserului clientului in momentul in care se intampla anumite conditii pe server.
Ca sa se inteleaga, mai pe romaneste, vorbesc despre asp.Net si cum se folseste ClientScriptManager.RegisterClientScriptBlock. Nu o sa exemplific la ce e bun, pentru ca exemplele ar fi personale, ci doar o sa exemplific folosirea Page.ClientScript.RegisterClientScriptBlock. Ce face si la ce e bun? Inregistreaza in pagina html generata de asp.net un cod javascript. Simplu si util.
Parametrii acestei metode sunt:

Continue reading

Colectii in .Net (exemple in limbajul c#)

   Colectiile reprezinta un mod de stoacare a obiectelor intr-o maniera structurata. Acestea sunt foarte utilizate in programare. Framework-ul .Net pune la dispozitia dezvoltatorilor foarte multe clase pentru lucrul cu colectiile. Toate aceste clase sunt continute in spatiul de nume System.Collections.

   .Net defineste o colectie ca fiind un obiect care implementeaza una sau mai multe interfete : System.Collections.ICollection, System.Collections.IListSystem, Collections.IDictionary. Astfel, vom avea o clasificare a colectiilor din framework:

   Colectii ordonate
   Aceste colectii implementeaza doar interfata ICollection si se deosebesc prin faptul ca ordinea in care elementele sunt inserate determina si ordinea in care elementele sunt regasite in colectie. Exemplu: Stack, Queue.

   Colectii indexate
   Acest tip de colectie se distinge prin faptul ca accesul la elemente se face prin index, (incepand cu 0), similar unui vector. Exemplu: ArrayList.

   Colectii pe baza de cheie
   Colectiile pe baza de cheie implementeaza interfata IDictionary. Ele contin elemente care pot fi accesate prin valoarea asociata cheii respectivului element (pereche cheie/valoare). Vom face o analiza scurta a clasei SortedList.

   Colectiile din System.Collections sunt colectii non-generice.

Continue reading

Enumerarea si compararea colectiilor

   .Net Framework contine doua seturi de interfete standard pentru enumerarea si compararea colectiilor. Un set  nontype-safe, IEnumerable si IEnumerator si un set type-safe, IEnumerable <T> si IEnumerator <T>. Toate intefetele din .Net Framework, prin conventie, isi incep numele cu I.

   Interfata IEnumerable contine o singura metoda, GetEnumerator. Obiectul returnat de aceasta metoda, este un enumerator folosit pentru parcurgerea elementelor colectiei, el implementand interfata IEnumerator.

Continue reading

Operatii IO in .Net – System.IO pe scurt

   Mai intai, sa ne reamintim ce inseamna un spatiu de nume.

   De multe ori, aplicatiile au nevoie sa stocheze date pe hard-disk (salvarea intre mai multe sesiuni ale datelor aplicatiei, data logging, troubleshooting, comunicarea cu alte aplicatii, compresarea, decompresarea datelor, etc). Pentru aceasta, aplicatiile vor folosi clasele din System.IO:

    using System.IO;

   System.IO contine clase care pot fi folosite la exploatarea, administrarea fisierelor si directoarelor din sistemul de operare.

Clasele DirectoryInfo si Directory

   Aceasta clasa contine metode statice pentru crearea, mutarea directoarelor, afisarea subdirectoarelor. Clasa nu poate fi mostenita.

   Alegem directorul Windows pentru a-i afisa subdirectoarele.

Citeste in continuare despre System.IO