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 :)