Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

DES enkripcija u .NET

[es] :: .NET :: DES enkripcija u .NET

[ Pregleda: 3812 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

EmptyBlog
Bijeljina

Član broj: 55548
Poruke: 23
*.ftn.ns.ac.yu.



Profil

icon DES enkripcija u .NET29.06.2005. u 17:49 - pre 228 meseci
imam sledeći problem:
Kada kriptujem 8 bajta DES-om, dobijem rezultat od 16 bajta. Koristim CryptoStream, pa pretpostavljam da to on pretvara u karaktere. Kako ovo da riješim?
Evo koda(MSDN)key-8 bajta,IV-8bajta, i 8 bajta za kriptovanje:
Code:

private static void EncryptData(String inName, String outName, byte[] desKey, byte[] desIV)
 {    
     //Create the file streams to handle the input and output files.
     FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
     FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
     fout.SetLength(0);
       
     //Create variables to help with read and write.
     byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
     long rdlen = 0;              //This is the total number of bytes written.
     long totlen = fin.Length;    //This is the total length of the input file.
     int len;                     //This is the number of bytes to be written at a time.
 
     DES des = new DESCryptoServiceProvider();          
     CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write);
                
     Console.WriteLine("Encrypting...");
 
     //Read from the input file, then encrypt and write to the output file.
     while(rdlen < totlen)
     {
         len = fin.Read(bin, 0, 100);
         encStream.Write(bin, 0, len);
         rdlen = rdlen + len;
         Console.WriteLine("{0} bytes processed", rdlen);
     }
 
     encStream.Close();  
     fout.Close();
     fin.Close();                   
 }


I kad koristim MemoryStream rezultat je 16 bajta. Pretpostavljam da CryptoStream to pretvara u karaktere, ali kao da ja tu vratim u 8 bajta?
Da li ima neko C .dll biblioteku sa DES, pa da napišem wrapper u C#.
 
Odgovor na temu

havramm
Miroslav Havram
Software Developer / Engineer
Beograd

Član broj: 4603
Poruke: 255
212.62.55.*



Profil

icon Re: DES enkripcija u .NET29.06.2005. u 18:22 - pre 228 meseci
To je sasvim OK ponasanje. DES je simetricni blok sifarski kriptografski algoritam koji radi sa blokovima duzine 8 bajta pa prema tome moze da kriptuje samo blokove te duzine. E sad da bi znao kada je kraj, nad poslednjim blokom mora da se izvrsi padding (PKCS#5) i to na taj nacin da se uvek dobije celi broj blokova, tj. ukoliko mu prosledis 5 bajta on ce izvrsiti padding sa 3 bajta da bi dobio blok duzine 8 bajta, a ukoliko mu prosledis blok cija je duzina jednaka celobrojnom umnosku duzine bloka on ce izvrsiti padding tako sto ce dodati jedan ceo blok za padding, tj. u tvom slucaju posto si mu prosledio plain text duzine 8 bajta on mora da izvrsi padding a to ce izvrsiti tako sto ce dodati jos jedan blok za padding, konkretno u tvom slucaju ce to biti blok koji izgleda ovako:
Code:
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08
Zbog cega 0x08? Zbog toga sto je dodato 8 bajtova za padding, logicno zar ne (pogledaj PKCS#5, sekcija 6.1.1) ? Ukoliko bi imao plain text duzine 5, tvoj padding text bi izgledao ovako
Code:
0x03, 0x03, 0x03
Na taj nacin rade svi simetricni blok sifarski kriptografski algoritmi (DES, 3DES, AES) u modovima ECB i CBC.
Nadam se da sam bio od pomoci i da sam bar malo pojasnio...

[Ovu poruku je menjao havramm dana 29.06.2005. u 19:26 GMT+1]
If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!
 
Odgovor na temu

EmptyBlog
Bijeljina

Član broj: 55548
Poruke: 23
*.ftn.ns.ac.yu.



Profil

icon Re: DES enkripcija u .NET29.06.2005. u 18:31 - pre 228 meseci
Da li to znači da je prvih 8 bajta, dobijenog kriptograma, ustvari moj željeni kriptogram?
 
Odgovor na temu

havramm
Miroslav Havram
Software Developer / Engineer
Beograd

Član broj: 4603
Poruke: 255
212.62.55.*



Profil

icon Re: DES enkripcija u .NET29.06.2005. u 18:35 - pre 228 meseci
Ne, bice da nisi procitao moj post - tvoj cipher je duzine 16. Znaci
Code:
cipher_length = ((plain_length / block_length) + 1) * block_length


OK?

'/' je celobrojno deljenje!!

[Ovu poruku je menjao havramm dana 29.06.2005. u 19:37 GMT+1]
If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!
 
Odgovor na temu

EmptyBlog
Bijeljina

Član broj: 55548
Poruke: 23
*.ftn.ns.ac.yu.



Profil

icon Re: DES enkripcija u .NET29.06.2005. u 18:43 - pre 228 meseci
Šefe, nov sam u kriptografiji...
Hajde ti meni objasni kako da kriptujem 8 bajta, a da dobijem kriptogram od ,takođe, 8 bajta, u DES naravno.

P.S. Može li se kriptovati bajt za bajtom, a ne po blokovima?
 
Odgovor na temu

havramm
Miroslav Havram
Software Developer / Engineer
Beograd

Član broj: 4603
Poruke: 255
212.62.55.*



Profil

icon Re: DES enkripcija u .NET29.06.2005. u 18:53 - pre 228 meseci
Naravno da moze , sto odma' nisi pitao?! To sto tebi treba se zove(u) CFB (Cipher Feedback Mode) i OFB (Output Feedback Mode) i predstavlja prakticno stream encryption sa blok sifarskim algoritmima, a u .NET-u se postavlja sa
Code:
SymmetricAlgorithm.Mode = CipherMode.CFB; // ili CBC, ECB, OFB...

SymmetricAlgorithm je bazna klasa svih simetricnih algoritama i DESCryptServiceProvider je izveden iz nje. Pogledaj CipherMode Enumeration
If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!
 
Odgovor na temu

EmptyBlog
Bijeljina

Član broj: 55548
Poruke: 23
*.ftn.ns.ac.yu.



Profil

icon Re: DES enkripcija u .NET29.06.2005. u 18:57 - pre 228 meseci
E, ziv bio.
Nemoj nigdje da bježiš, možda mi zatrebaš ovih dana. :)))
Hvala puno.
 
Odgovor na temu

[es] :: .NET :: DES enkripcija u .NET

[ Pregleda: 3812 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.