Re: I'm having problems with cryptography and sockets, help
From: Alejandro Castañaza (da_castanaza_borrar_at_itelgua.com)
Date: 03/14/05
- Next message: Jon Skeet [C# MVP]: "Re: I'm having problems with cryptography and sockets, help"
- Previous message: Scott Klueppel via DotNetMonster.com: "Re: Comparison to null"
- In reply to: Nicholas Paldino [.NET/C# MVP]: "Re: I'm having problems with cryptography and sockets, help"
- Next in thread: Jon Skeet [C# MVP]: "Re: I'm having problems with cryptography and sockets, help"
- Reply: Jon Skeet [C# MVP]: "Re: I'm having problems with cryptography and sockets, help"
- Messages sorted by: [ date ] [ thread ]
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();
>>
>>
>>
>>
>>
>
>
- Next message: Jon Skeet [C# MVP]: "Re: I'm having problems with cryptography and sockets, help"
- Previous message: Scott Klueppel via DotNetMonster.com: "Re: Comparison to null"
- In reply to: Nicholas Paldino [.NET/C# MVP]: "Re: I'm having problems with cryptography and sockets, help"
- Next in thread: Jon Skeet [C# MVP]: "Re: I'm having problems with cryptography and sockets, help"
- Reply: Jon Skeet [C# MVP]: "Re: I'm having problems with cryptography and sockets, help"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|