De curand,spre horoarea mea ,am aflat ca metodele de encriptare pe care le folosim noi(care jongleaza cu interpretari si modificari de date) se pot sparge oricat de complexe ar fi algoritmul de encriptare... Imediat apare intrebarea ...
bun dar cum ne aparam datele?Am facut cercetari pe acest principiu si am dat de
Algoritmul de criptare RSA .RSA vine de la cei 3 matematicieni(cred) :Ron Rivest, Adi Shamir, si Leonard Adleman,inventat la sfarsitul anilor '70!
Idei generale a algoritmului RSA!Ok...ganditi-va ca navigati pe internet,doriti sa verificati mailurile de pe Yahoo sa zicem.Pentru asta sunteti rugat sa introduceti un user si o parola.In acelasi timp,cineva de pe retea isi porneste
snifferul si il "indreapta" spre dumneavoastra! Din cate stiu eu ... parola de la yahoo impreuna cu userul circula neincriptate pe internet! Nu ii este greu ca acelei persoane sa puna mana pe parola si userul vostru si sa constatati cu stupoare ca ,sazicem, in 2-3 zile cineva v-a sters mailuri sau mai rau,va schimbat parola! Ideea generala este ca oricat de encriptat e un mesaj...daca exista un algoritm de encriptare...mai devreme sau mai tarziu algoritmul va fi spart si mesajul divulgat! Este ca si cum ai trimite bani prin posta si cineva i-ar intercepta ,iar banii nu vor mai ajunge niciodata la destinatie.
Cum rezolvam aceasta problema? Aici intra
algoritmul RSA in scena!
In termeni populari ,pentru aceasi situatie(expeditor-hot-destinatar),ar fi asemanator in a spune ca destinatarul are o cutie si un lacat si evident o cheie pentru lacat...trimite cutia impreuna cu lacatul neinchisa catre persoana care ii va trimite bani.Fiind vorba de o cutie...este inutila unui eventual hot...In final cutia noastra ajunge la persoana cu banii...persoana respectiva pune banii in cutie si de data asta inchide cutia cu lacatul si o expediaza inapoi la destinatar.Acum...chiar daca banii sunt pe drum intre expeditor si destinatar,in cazul unei eventuale interceptii...hotul nostru nu va putea face nimic decat sa admire cutia inchisa...Dupa ce cutia ajunge la destinatar...acesta cum are cheie,desface lacatul si ia banii! Este o metoda sigura...
In linii mari...se genereaza 2 XML-uri cu date dupa algoritmul RSA.
Primul XML este public...adica reprezinta lacatul nostru care parcurge tot drumul.
Al doilea XML reprezinta cheia pe care numai destinatarul o are!
Am inteles principiul babeste... nu mi-a trebuit mai mult si am reusit sa creez o clasa in c# care sa se ocupe de encriptare/decriptare pe baza celor 2XML-uri generate!
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
namespace testRSAencription
{
class Criptografie
{
private RSACryptoServiceProvider RSA;
public string PublicKey;
public string PrivateKey;
public Criptografie()
{
CspParameters cspParams = new CspParameters();
cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
RSA = new RSACryptoServiceProvider(cspParams);
PublicKey = RSA.ToXmlString(false);
PrivateKey = RSA.ToXmlString(true);
}
public byte[] Encripteaza(byte[] Data, string PublicKeyIn)
{
RSA.FromXmlString(PublicKeyIn);
return RSA.Encrypt(Data, false);
}
public byte[] Decripteaza(byte[] Data, string PrivateKeyIn)
{
RSA.FromXmlString(PrivateKeyIn);
return RSA.Decrypt(Data, false);
}
}
}
Clasa constituie din 2 functii...encriptare respectiv decriptare! Ambele functii returneaza un array de
bytes si au ca parametri : datele encriptare sub forma de array de
bytes ,"lacatul" respectiv "cheia"

!
Pana acum mi se pare cel mai reusit mod de encriptare de date!Daca mai stiti unu care nu este "traditional" vorbiti acum sau taceti pe vecie!

©3Nigma