Hola amigos, tengo el siguiente problema, necesito enviar mensajes de tipo alfanumérico por internet pero tienen que estár encriptados. De hecho es un poco simple, tengo una aplicación servidor y cliente que envian y reciven los mensajes:
En el lado del servidor hay algo parecido a esto:
mensaje := AThread.Connection.ReadLn;
mensaje := AlgoritmoEncriptar.Desencriptar(mensaje);
.
MensajeEnviado := AlgoritmoEncriptar.Encriptar(MensajeEnviado);
AThread.Connection.WriteLn(MensajeEnviado);
.
y en el cliente:
with idTCPClient1 do
begin
mensaje := Login + ',' + Password;
enc := AlgoritmoEncriptar.Encriptar(mensaje);
Writeln(enc);
Respuesta := ReadLn;
RespuestaDesencrip := AlgoritmoEncriptar.Desencriptar(Respuesta);
end;
Todo funciona bien hasta que en las cadenas de caracteres encriptados, apareces los caracteres #10 y #13 y según el delphi son para ser utilizados por algunos protocolos de internet cuando se quiere enviar o recibir algún texto con ReadL o WriteLn:
"The optional ATerminator parameter indicates the end-of-line symbol for the particular protocol. If data is expected, and you do not need a custom end-of-line symbol, you can use the default ATerminator value (#0). ATerminator values include:
#0 - Default Line Feed (#10)
LF - Line Feed (#10)
CR - Carriage Return (#13)"
EOL - End-of-line (Carriage Return + Line Feed)"
El algoritmo de encriptación que estoy usando es uno que encontré en esta página:
http://www.howtodothings.com/showart...sp?article=280 de ANATOLY PODGORETSKY
Y de hecho funciona muy bien, pero como es de esperarce en el texto encriptado ocasionalmente parecen los caracteres #10 y #13, supongo porqué no estába pensado para ser utilizado en Internet y es precisamente esto lo que hace que los mensajes se mutilen cuando se trabaja con los componentes Indy cuando se detecta uno de esos caracteres de fin de lines y retorno de carro.
Quisiera saber si no existiera una mejor forma de enviar mensajes encriptados que sean compatibles con Indy????
Muchas gracias de antemano.