Avatar billede thomaslp Nybegynder
12. august 2003 - 19:03 Der er 2 kommentarer

kryptering default nøgle...hvordan virker det??

Jeg har eksemplet fra microsofts hjemmeside:

FileStream fs  = new FileStream("EncryptedFile.txt",FileMode.Create,FileAccess.Write);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
ICryptoTransform desencrypt = des.CreateEncryptor();
CryptoStream cryptostream = new CryptoStream(fs,desencrypt,CryptoStreamMode.Write);
cryptostream.Write(bytearrayinput,0,bytearrayinput.Length);
cryptostream.Close();

Dette virker også fint, men når jeg decrypter får jeg en fejl pga. forkert datastørrelse og padding fejl.

Jeg har tidligere arbejdet med javas cryptology pakke, og her SKAL man selv oprette nøgler og medsende disse. Ovenstående eksempel virker også fint hvis jeg gør dette
ved at skrive:

byte[] key = key = minSymmetricAlgorithm.Key;

Er dette den korrekte måde at oprette en nøgle på?

Er der nogen der kan forklare mig hvorfor man i .Net umiddelbart ikke selv skal oprette nøglen, men istedet kan anvende en default nøgle.

Jeg sidder med bogen ".Net Security" og her anvender man bare default nøglen, uden at forklare nærmere herom.

Måske en god tutorial kan hjælpe med at afklare mine spørgsmål. Jeg har bare ikke kunne finde en på nettet.
Avatar billede wisen Nybegynder
29. juli 2004 - 17:20 #1
du kan selvfølgelig selv angive hvilken nøgle der skal benyttes til kryptering/dekryptering - men det er rigtigt at når man instantierer en CryptoServiceProvider, så har den genereret en nøgle og en initialiseringsvektor... men disse kan overskrives

Prøv følgende eksempel :

string cipherString = "Hej Verden";
byte[] cipherData = System.Text.Encoding.Unicode.GetBytes(cipherString);

PasswordDeriveBytes pdb = new PasswordDeriveBytes("dillerdaller", new byte[] { 0x88, 0x81, 0x7f, 0x30, 0x7e, 0x2e, 0x3b, 0x44, 0xbf, 0x0, 0x46, 0xe8, 0xbb, 0x6f, 0x31, 0x2 } );

Rijndael algorithm = Rijndael.Create();
algorithm.Key = pdb.GetBytes(32);
algorithm.IV = pdb.GetBytes(16);

// Encrypt...
System.IO.MemoryStream encryptionStream = new System.IO.MemoryStream();
           
CryptoStream cryptoStream = new CryptoStream( encryptionStream, algorithm.CreateEncryptor(), CryptoStreamMode.Write );
cryptoStream.Write(cipherData, 0, cipherData.Length);
cryptoStream.Close();

byte[] encryptedData = encryptionStream.ToArray();

// Decrypt...
System.IO.MemoryStream decryptionStream = new System.IO.MemoryStream();
           
cryptoStream = new CryptoStream( decryptionStream, algorithm.CreateDecryptor(), CryptoStreamMode.Write );
cryptoStream.Write(encryptedData, 0, encryptedData.Length);
cryptoStream.Close();

byte[] decryptedData = decryptionStream.ToArray();
string decryptedString = System.Text.Encoding.Unicode.GetString(decryptedData);
Avatar billede wisen Nybegynder
11. november 2004 - 10:13 #2
Har du fået kigget på det ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester