Re: I'm having problems with cryptography and sockets, help

Tech-Archive recommends: Fix windows errors by optimizing your registry

From: Alejandro Castañaza (da_castanaza_borrar_at_itelgua.com)
Date: 03/14/05


Date: Mon, 14 Mar 2005 15:02:17 -0600

By the way...
Is there a method to convert an int to an array of bytes?

"Nicholas Paldino [.NET/C# MVP]" <mvp@spam.guard.caspershouse.com> escribió
en el mensaje news:%23cHjR1LKFHA.3652@TK2MSFTNGP10.phx.gbl...
> Alejandro,
>
> It looks like you are trying to read too much data. You are issuing a
> call to the Read method on the socket class passing in a length of 8192
> bytes. If the sender does not send 8192 bytes, the call to Read is going
> to block until it gets 8192 bytes.
>
> There are two ways of handling this. The first is to mark your message
> with an identifier which indicates that the message has completed
> transmission. This would require you to read byte-by-byte, which is not a
> good thing.
>
> The second is to actually send the length of the message before you
> send the message yourself. This way, you can issue a call to the Read
> method and know you are not asking for more data than is on the line.
>
> Hope this helps.
>
>
> --
> - Nicholas Paldino [.NET/C# MVP]
> - mvp@spam.guard.caspershouse.com
>
> "Alejandro Castañaza" <da_castanaza_borrar@itelgua.com> wrote in message
> news:%23KyctTLKFHA.3788@tk2msftngp13.phx.gbl...
>> Hi.
>>
>> I'm writing a program, and I need to send confidential data through the
>> network, so I decided to use encryption, using the
>> System.Security.Cryptography namespace.
>>
>> I'm using the sockets for the network communications, and the program
>> first does a key exchange, with the asymetric cipher classes, to get a
>> new key for the symmetric cipher. My problem is, that although I have
>> checked that the two points get to the same key and initialization
>> vector, when the sender sends the data, its ok, but the receiver gets
>> blocked. I am using blocking sockets, so I am aware that if the socket
>> does not have received data, it blocks until it does. But I know that it
>> does receive the data, and still it blocks, not the NetworkStream, but
>> the CryptoStream used to decrypt the data. I have been trying many
>> things, using the StreamReader and StreamWriter like in the documentation
>> examples, but doesn't work.
>>
>> I need help, please. It's been 2 full days trying, please help.
>>
>> Alejandro.
>>
>>
>>
>> Here are some lines of the code:
>>
>> This is the receiver code (where it blocks, in the Read function):
>>
>> string mensaje;
>> NetworkStream stream = clienteTcp.GetStream();
>> // Crear el stream criptográfico
>> CryptoStream crStream = new
>> CryptoStream(stream,TDES.CreateDecryptor(tdesClave,tdesIV),
>>
>> CryptoStreamMode.Read);
>> // Búfer de 8Kb
>> byte[] datos = new byte[8192];
>> int bytes;
>> int intentos = 25;
>> // Detectar si hay datos
>> while(intentos > 0)
>> {
>> if (stream.DataAvailable)
>> break;
>> intentos--;
>> System.Threading.Thread.Sleep(200);
>> }
>> // Si no hay datos salir
>> if (!stream.DataAvailable)
>> return String.Empty;
>> // Leer mensaje
>> bytes = crStream.Read(datos,0,datos.Length);
>> // Pasar a string
>> mensaje = System.Text.Encoding.Unicode.GetString(datos,0,bytes);
>>
>>
>> This is the sender code:
>>
>> NetworkStream stream = new NetworkStream(clienteTcp);
>> // Crear el stream criptográfico
>> CryptoStream crStream = new
>> CryptoStream(stream,TDES.CreateEncryptor(tdesClave,tdesIV),
>> CryptoStreamMode.Write);
>> // Convertir el string a una matriz de bytes
>> byte[] datos = System.Text.Encoding.Unicode.GetBytes(mensaje);
>> // Transmitir mensaje
>> crStream.Write(datos,0,datos.Length);
>> crStream.Flush();
>>
>>
>>
>>
>>
>
>



Relevant Pages

  • [PATCH 1/1] IPN: Inter Process Networking
    ... +IPN is an Inter Process Communication service. ... +interface and protocols used for networking. ... +to a "network". ... +creates a communication socket. ...
    (Linux-Kernel)
  • Re: [PATCH 1/1] IPN: Inter Process Networking
    ... +IPN is an Inter Process Communication service. ... +interface and protocols used for networking. ... +to a "network". ... +creates a communication socket. ...
    (Linux-Kernel)
  • Re: Home Networking
    ... has 4 network sockets) in the roofspace and then wire a CAT5 network ... NTE5 master socket, so I don't need a filter at each phone outlet. ... A number of different suppliers offer such equipment, including Solwise whose range I use including their Homeplug ADSL Modem Router. ...
    (uk.telecom.broadband)
  • Re: multithreaded dialog application
    ... multiple threads, a rewrite of the piece of crap in the MSDN. ... the socket messages are posted to the main thread to be processed. ... Nearly all the socket messages are simply passed on to a child dialog ... If you have only one network interface then there ...
    (microsoft.public.vc.mfc)
  • Network freezes up
    ... PROBLEM: Network freezes up. ... Client side machine ok. ... Reboot the server machine cures the problem for a while. ... socket classes, not based on MFC. ...
    (microsoft.public.win32.programmer.networks)