În acest tutorial nu vom tine lua în considerare toate aspectele teoretice ale procesului de criptare a datelor, deoarece acest lucru ar necesita câteva lecții. Vom studia doar elementele de bază, dar ele vor fi suficient de bine ca ai putea cripta datele și de a efectua decriptarea lor.
Criptare Există două tipuri: un singur sens - atunci când datele pot doar cripta și decripta este imposibil (de exemplu, criptare MD5) și bi-direcțională - atunci când este posibil, cum criptarea și decriptarea datelor. In acest tutorial vom folosi două căi de criptare. Pentru a lucra cu criptare într-un limbaj proiectat extensie PHP numit mcrypt, care permite criptarea datelor folosind diferiți algoritmi de criptare (cifruri).
Mă grăbesc să spun că nu este necesar de a veni cu un algoritm de criptare diferit.
Deoarece criptarea datelor - este o știință, și de a crea propriile lor algoritmi, nu poate lua în considerare o mulțime de lucruri diferite. Ceea ce va duce la vulnerabilitatea datelor criptate și, eventual, pentru a rupe atacatorii lor. Cel mai bine este să utilizați un algoritmi gata de utilizare, sunt foarte fiabile și, ca să spunem așa, în timp testat. Algoritmul de criptare - este de fapt modul în care datele vor fi criptate.
Fiecare algoritm suportă mai multe moduri de criptare. Mod de criptare - o metodă de aplicare a unui cifru bloc, care vă permite să convertiți o secvență de blocuri de cod sursă, care este criptat în secvența de blocuri de date criptate. Astfel, criptarea poate fi folosit de alte blocuri de date. Tu și cu mine vom folosi una dintre cele mai bune moduri de criptare - MCRYPT_MODE_CFB. Acest mod, de asemenea, numit modul de feedback te ciphertext - este o variantă a utilizării unui cifru bloc, în care criptarea următorul bloc plaintext folosind rezultatul cripteze blocul anterior.
Acum să trecem la criptarea datelor.
criptarea datelor
Pentru a începe, să creeze un scurt formular pentru a introduce text pentru a fi criptate:
După cum puteți vedea - aceasta este o formă comună și este afișat în browser ca aceasta:
Aceasta este, datele care urmează să fie introduse în formular, vă vom contacta în cripta și afișa codul. Apoi, mai jos, de asemenea, extragem decriptat șir. În continuare, să creeze o variabilă care va stoca cheia privată necesară pentru procesul de criptare, precum și pentru a decripta datele.
IMPORTANT. În cazul în care cheia este pierdut, datele descifra nu va fi capabil.
Această cheie poate fi stocată în fișierul de configurare, principalul lucru care ar fi el, dar tu, care nu are acces. Din moment ce nu avem fungii de configurare, atunci voi crea această cheie în fișierul index.php:
Vă rugăm să rețineți - acesta este șirul de caractere aleatoare obișnuit. Aveți dreptul să-l schimbe la discreția lor. Deci, dacă vii la datele folosind metoda POST, atunci vom crea un str $ variabilă și se păstrează în ea valoarea de matrice de celule.
Apoi, aveți nevoie pentru a deschide modulul mcrypt:
Pentru a face acest lucru, vom folosi funcția mcrypt_module_open care se deschide modulul mcrypt pentru a începe procesul de criptare. Parametrii trecut la funcția:
MCRYPT_BLOWFISH - algoritm de cifrare;
„- în cazul în care algoritmul nu este un standard, atunci acest parametru specifică calea către algoritmul de criptare;
MCRYPT_MODE_CFB - modul de criptare;
„- în cazul în care criptarea nu este un standard, atunci acest parametru specifică calea către modul de criptare.
Apoi, aveți nevoie pentru a crea un vector de inițializare, care este utilizat pentru fiecare algoritm și de fiecare dată - ca parte a procesului de criptare - care este o parte integrantă. Vectorul de inițializare este caracterizată de mult timp, asa ca lasa, și să definească:
După cum puteți vedea pentru a determina lungimea funcției mcrypt_enc_get_iv_size vectorul de inițializare utilizat (), parametrul care urmează să fie transmis diskriptor modulul deschis mcrypt. Acum, aveți nevoie pentru a crea vectorul:
mcrypt_create_iv () funcția creează un vector de inițializare. Parametrii care urmează să fie trecut: $ iv_size - lungimea vectorului, MCRYPT_RAND - modul de achiziție vector de inițializare, în acest caz, generarea de vectori aleatori. Pe lângă cripta la început, trebuie să deschideți clipboard:
mcrypt_generic_init () funcție - deschide clipboard, care este necesară pentru procesul de criptare. Parametrii trebuie să treacă următoarele valori:
$ Td - diskriptor modul deschis mcrypt;
$ Cheie - cheia privată, care este necesară pentru criptarea datelor și decriptarea pentru ei;
$ Iv - vector de inițializare.
Acum puteți cripta datele:
Pentru această funcție de utilizare mcrypt_generic (), care criptează de fapt, datele de algoritmul de criptare selectat și un mod. Parametrii sunt transferate următoarele valori: $ TD - diskriptor modul deschis Mcrypt; $ Str - un șir de caractere pentru a fi criptate. Și nu uitați să închideți clipboard deschis și modulul mcrypt:
Acum, pentru a adăuga o linie de criptat, vectorul de inițializare a primit inițial și derivă textul cifrul de pe ecran. Dar, înainte de afișarea funcției șir base64_encode tratate (), în caz contrar ecranul vom vedea o mulțime de personaje nu sunt ușor de citit.
Acum, să intre în șir text Bună ziua lume și să vedem ce avem:
După cum puteți vedea toate lucrările de succes - criptăm datele, acum trebuie să le descifreze.
date decriptarea
Așa că trebuie să ai un șir de criptat, care merge primul vector de inițializare, și apoi linia de date reale pe care doriți să ajungă la noi. Prin urmare, trebuie să redescoperim modulul mcrypt și pentru a obține dimensiunea vectorului de inițializare:
După cum puteți vedea, funcțiile care le folosim la fel, cu aceiași parametri. Mai departe, din șirul criptat trebuie separate și șirul de date vector de inițializare în sine. Pentru a face acest lucru, și am folosi dimensiunea vectorului de inițializare și funcția substr normală (). Deci, vom obține vectorul de inițializare:
După cum puteți vedea, pur și simplu tăiat în afara liniei, de la zero până la valoarea iv_size1 $ variabila (lungimea vectorului de inițializare). Apoi, vom obține un șir de caractere cu datele:
Astfel, avem o linie directă cu datele (criptate) și vectorul de inițializare. Deci, putem descifra acest șir. Pentru a face acest lucru, deschideți clipboard, care este de asemenea necesară pentru a decripta datele:
B este cauzată de funcția de decriptare a datelor:
Această funcție decriptează datele. Parametrii trebuie să treacă următoarele valori: $ td - modulul deschis diskriptor; , $ Crypt_text1 - un șir de caractere cu datele criptate. Apoi închideți clipboard-ul, modulul mcrypt deschis și afișează rezultatele pe ecran:
Să ne în caseta de text, tastați toate același șir „lumea bună“ și uita-te la rezultatul:
După cum puteți vedea toate lucrările cu succes. În orice caz, textul integral al scenariului:
În această lecție, puteți termina acest lucru. Toate cele bune, codificarea cu succes! Și te voi vedea în următoarele lecții!
Cele mai multe știri IT si dezvoltare web pe canalul nostru-Telegram