Kriptim simetrik
Kriptim Simetrik
Kriptimi Simetrik, i njohur ndryshe edhe si kriptimi me “çelës sekret”, përdor një madhësi sekrete me të cilën kriptohen të gjitha mesazhet. Kriptimi simetrik ka këto karakteristika:
●Fuqia e kriptimit korrespondon me gjatësinë e çelësit. Sa më e madhe të jetë gjatësia e çelësit, aq më e vështirë bëhet thyerja e kodit.
●Enkriptimi Simetrik është matematikisht më i thjeshtë dhe më i shpejtë sesa kriptimi asimetrik, për këtë arsye është më i përdorshëm në rastet kur dëshirojmë të kriptojmë fajllat që janë shumë të mëdha.
●Siguria e Kriptimit Simetrik varet nga siguria e celësit që duhet të dihet nga dy palët komunikuese.
Klasët në .NET Framework të cilat implementojnë algoritmin simetrik janë klaset e derivuara nga klasa abstrakte bazë "SymmetricAlgorithm". Klasa abstrakte "SymmetricAlgorithm" ka disa fusha mbrojtjeje, të cilat nuk janë direkt të qasshme nga metodat e klasave të joderivuara. Mirëpo, këtyre fushava të mbrojtura mund t’u qasemi permes rekuizitave gati të hapura, të cilat zbatohen në klasët konkrete.
"SymmetricAlgorithm - Klasët e derivuara"
Ne asnjëherë nuk punojmë direkt me një objekt të "SymmetricAlgorithm", për arsye se kjo është një klasë abstrakte. Ne punojmë me klasën e derivuar konkrete, e cila zbaton të gjitha vetitë publike së bashku me metodat abstrakte dhe virtuale të "SymmetricAlgorithm" në një algoritëm të veçantë.
Siç shihet në edhe nga figura, klasat vijuese, të cilat gjithashtu janë klasa abstrakte, janë të derivuara nga "SymmetricAlgorithm". Ne shkurtimisht do të shohim si të programojmë me klasët konkrete të derivuara nga këto klasë abstrakte.
● "DES" është një klasë abstakte, e cila zbaton algoritmin simetrik DES
● "TripleDES" është një klasë abstrakte, e cila zbaton algoritmin simetrik TripleDES
● "Rijandael" është një klasë abstrakte, e cila zbton algoritmin simetrik Rijandael që paraqet një standard për zëvendësimin e DES-it.
● "CR2" është një klasë abstrakte, e cila zbaton algoritmin simetrik RC2 që është zhvilluar nga Ronald Rivest si një zëvendëses potencial i DES-it.
Të gjitha këto klasa abstrakte më tutje derivohen në klasa konkrete, të cilat zbatojnë algoritmet simetrike përkatëse. .NET Framework ofron klasat konkrete për secilin nga këto algoritme. Vetitë (angl. Public properties) dhe metodat e hapura (angl. Public methods) të caktuara, të përmendura më sipër janë të implementuara në secilin rast. Katër klasat konkrete të ofruara janë:
"DESCryptoServiceProvider"- është një klasë mbështjellëse ("angl. wrapper class"), e cila ofron qasje tek;
"TripleDESCryptoServiceProvider"
"RC2CryptoServiceProvider"
"RijndaelManaged"
"CryptoStream"
Klasa "CryptoStream" na mundëson që të lexojmë dhe shkruajmë të dhëna përmes nje cipher stream objekti sikurse ne të dëshironim të operonim me input/output të dhëna në fajll apo socket stream objekt. Klasa "CryptoStream" mund të përdoret për kriptim ("modi përshkruarje") ose dekriptim ("modi për lexim")
Konstruktori për "CryptoStream" është:
Public "CryptoStream"
{
Stream stream, IcryptoTransfrom transform, CryptoStreamMode mode
};
Duke pasur stream objekti një IcryptoTransform object për kriptim të shoqëruar me algoritmin simetrik të dëshiruar dhe vlerën CryptoStreamMode.Write që të tregon drejtimin për I/O, ne efektivisht krijojmë një objekt CryptoSystem, i cili do t'i kriptojë të gjithë të dhënat që shkruhen në të.
"MemorySteam ms = në MemoryStream();
"CryptoStream cs = në CryptoStream"
{
ms , sa.CreatEncryptor(), CryptoStreamMode.Write
};
Duke e pasur në MemoryStream bazuar në byte array ciphetext specific një object për dekriptim IcryptoTransform dhe CryptoStreamMode.Read modin, ne efektivisht krijojmë një objekt CryptStream, i cili mund t'i dekriptojë të gjitha të dhënat që lexohen nga ai.
"MemoryStream ms=new MemoryStream (chiperbytes)
"CrypoStream cs=new CryptoStream"
{
ms , sa. CreatDecryptor(), CryptoStreamMode.Read
};