Avatar billede apoltix Nybegynder
09. august 2007 - 20:29 Der er 4 kommentarer og
1 løsning

Fejl i TCP/Socket chatprogram med kryptering

Kære eksperter, jeres visdom jeg søger...

Jeg har arbejdet lidt på et simpelt chatprogram, der kører over nogle TCP sockets. Jeg kopierede noget kode herfra http://www.java2s.com/Code/CSharp/Network/NewTcpChat.htm, og tilpassede det lidt til mine behov. Chatprogrammet skulle have det formål at kryptere meddelelserne og dekryptere dem igen hos modtageren. Til dette benyttes AES (Rijndael) - hertil en speciel krypteringsnøgle og en initialiseringsvektor til den symmetriske algoritme. Det hele foregår i byte arrays, og i sidste ende får man et byte array, der (som streng) ville se ud i retningen af 751591686204272145924158153143208167191169. Ja, den burde jo være relativ nem at få overført, da jeg sender den som var det almindelige tal. Det bliver sendt på nøjagtig samme måde, som sætninger med bogstaver, mellemrum og andre tegn, ville blive sendt.

Når man sender en besked bliver det godtnok krypteret, og den samme krypterede talrække bliver også modtaget i korrekt længde og form, men alligevel får jeg en CryptographicException med beskrivelsen "Længden af de data, der skal dekrypteres, er ugyldig", på trods af, det er de samme data, der bliver modtaget (i et byte array).

Jeg har kopieret indholdet af de to konsollers output og uploadet dem på henholdsvis http://docs.apoltix.com/misc/exp/exp_server.txt og http://docs.apoltix.com/misc/exp/exp_client.txt. Læg specielt mærke til klientfilen, hvor byte arrayet ikke ligefrem ser normalt ud. Dette sker uanset om man sender beskeden fra serveren eller klienten. Det ser ud, som om byte-arrayet enten er korrupt (umuligt?) eller et eller andet. Som man kan se får modtageren arrayet korrekt, så det undrer mig stadig, at modtageren får en exception ved dekryptering.

Ja, begge computere/terminaler benytter samme krypteringsnøgle (faktisk er det nøjagtig det samme program, bare i server eller client mode). Så eksperter, giv mig jeres vise råd :)
Avatar billede arne_v Ekspert
10. august 2007 - 04:16 #1
Så vidt jeg kan se (jeg foretrækker kode fremfor debug output) så encoder du
16 non printable bytes i 42 tegn som alle er 0-9 og sender det - på den anden
sider forsøger du at dekode 42 bytes i.s.f. at konvertere dem til 16 non printable bytes først.

Det duer ikke !
Avatar billede arne_v Ekspert
10. august 2007 - 04:16 #2
Fejl teksten skyldes at der skal være multipla af enten 8 eller 16 i der det krypteres/dekrypters.
Avatar billede arne_v Ekspert
10. august 2007 - 04:18 #3
Du kan vist iøvrigt ikke fixe de umiddelbart.

Fordi du kan ikke se om "75159" er 75,159 eller 7,51,59 eller noget andet.

Enten sender du de rå bytes.

Eller så Base64/Hex encoder/decoder du.
Avatar billede arne_v Ekspert
22. september 2007 - 21:34 #4
apoltix ??
Avatar billede apoltix Nybegynder
06. oktober 2007 - 15:27 #5
Sorry, jeg glemte lige alt om det. Jeg kunne ikke få det til at virke, så jeg droppede det. Ellers tak.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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