Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-05-2016
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Encryptacion con ORD

Estimados tengo una gran duda me estoy volviendo loco el tema es asi tengo un texto que tiene una serie de caracteres encriptados que lo encripto con la función ORD pero por ejemplo cuando encripta a la letra C me la pone como el símbolo œ ahora bien al desencriptar me trae uno símbolos raros lo cual antes lo hacia bien lo que noto que el problema esta al usar el not dejo un ejemplo!!!!
Código Delphi [-]
var
  CharIndex : integer;
begin
  Result := Value;
  for CharIndex := 1 to Length(Value) do
    Result[CharIndex] := chr(not(ord(Value[CharIndex])));
end;

atte. Gracias como siempre

Última edición por Casimiro Notevi fecha: 13-05-2016 a las 21:50:59.
Responder Con Cita
  #2  
Antiguo 13-05-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No olvides poner las etiquetas para código, gracias
Responder Con Cita
  #3  
Antiguo 13-05-2016
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Perdon

Perdon se me paso :C
Responder Con Cita
  #4  
Antiguo 14-05-2016
Avatar de BDWONG
BDWONG BDWONG is offline
Miembro
NULL
 
Registrado: nov 2013
Posts: 113
Poder: 11
BDWONG Va por buen camino
Hola que version de delphi estas utilizando?
Hice unas pruebas en delphi 2010 y no tuve ningun problema

Código Delphi [-]
function cifrar_Descifrar(const value:string):string;
var
CharIndex:Integer;
begin
  Result := Value;
  for CharIndex := 1 to Length(Value) do
    Result[CharIndex] := chr(not(ord(Value[CharIndex])));
end;


var
msg:string;
begin
   msg:='Hello world C';

   msg:=cifrar_Descifrar(msg);
   Writeln(msg);

   msg:=cifrar_Descifrar(msg);
   Writeln(msg);

   Readln;
end.

Saludos
Responder Con Cita
  #5  
Antiguo 14-05-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por gdlrinfo Ver Mensaje
lo encripto con la función ORD
Usar ORD no es encriptacion, o mejor dicho, lo es de la peor forma posible. NUNCA uses algo "inventado" por ti para estos temas, siempre usar una libreria hecha por criptografos.
__________________
El malabarista.
Responder Con Cita
  #6  
Antiguo 14-05-2016
Avatar de BDWONG
BDWONG BDWONG is offline
Miembro
NULL
 
Registrado: nov 2013
Posts: 113
Poder: 11
BDWONG Va por buen camino
@mamcx No entiendo que tiene de malo que se haga algun algoritmo que cifro o descifre una cadena? ademas no esta especificando para que o porque lo esta haciendolo, asi que no comprendo tu comentario.
Responder Con Cita
  #7  
Antiguo 15-05-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que lo dice porque con ord es tan evidente el resultado que más que "encriptación", se le podría llamar "intento de ocultación", pero no es nada serio si se quiere ocultar realmente una información.
Responder Con Cita
  #8  
Antiguo 15-05-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por BDWONG Ver Mensaje
asi que no comprendo tu comentario.
Lo hice porque si el objetivo es realmente encriptar, el uso de ORD es muy errado, y su uso en cualquier ambito donde se requiera seguridad es totalmente inutil. Ademas, es mas correcto decir que eso es un "encoding".

Probablemente se esta usando "encriptacion" en un tono muy liberal, pero es que me acuerdo que esa fue mi primera forma de "ocultar" claves....
__________________
El malabarista.
Responder Con Cita
  #9  
Antiguo 16-05-2016
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Buenas

Buenas Gracias por los comentarios en si no se necesita una seguridad importante solo es para que no se vea como esta escrita la frase el problema en verdad es que esta guardada en un XML y es un programa antiguo bien ahora cuando levanto por ejemplo el nombre que es Jorge me trae esta simbología (ユミヘリレ) y antes lo que estaba guardado en el XML era (Œšœž) entonces el problema es que hoy en día cuando lo codifica sale (ユミヘリレ) y antes salía (Œšœž).- Se entiende es como que ahora no encuentra la misma simbología que antes .. atte. Gracias como siempre
Responder Con Cita
  #10  
Antiguo 16-05-2016
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Si vas a guardar esa cadena en un archivo XML, seguramente tendrás problemas de codificación.

Al aplicar tu función de encriptación el resultado puede contener caracteres no imprimibles y este puede ser el origen del problema al enviarlo a un archivo XML.

Lo más recomendable en este caso es que al resultado de tu encriptación le apliques adicionalmente la codificación Base64, el resultado será una cadena en la cuál todos los caracteres son imprimibles y en un rango seguro para compartir información sobre archivos XML. Después, cuando quieras obtener el contenido de la variable desde tu archivo XML debes aplicar las funciones a la inversa, es decir, primero descodificar Base64 y el resultado va a tu función inversa de cripto para obtener la cadena original.

Te recomiendo que busques en los foros por alguna función que codifique y descodifique Base64.

Saludos
Responder Con Cita
  #11  
Antiguo 16-05-2016
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Buenas

Cita:
Empezado por Héctor Randolph Ver Mensaje
Si vas a guardar esa cadena en un archivo XML, seguramente tendrás problemas de codificación.

Al aplicar tu función de encriptación el resultado puede contener caracteres no imprimibles y este puede ser el origen del problema al enviarlo a un archivo XML.

Lo más recomendable en este caso es que al resultado de tu encriptación le apliques adicionalmente la codificación Base64, el resultado será una cadena en la cuál todos los caracteres son imprimibles y en un rango seguro para compartir información sobre archivos XML. Después, cuando quieras obtener el contenido de la variable desde tu archivo XML debes aplicar las funciones a la inversa, es decir, primero descodificar Base64 y el resultado va a tu función inversa de cripto para obtener la cadena original.

Te recomiendo que busques en los foros por alguna función que codifique y descodifique Base64.

Saludos
Hola Héctor el tema es que antes funcionaba genial y ahora no solo muestra símbolos como chinos nose el porque pero este programa debe tener 10 años desde que se hizo y siempre funciono bien.- atte.-
Responder Con Cita
  #12  
Antiguo 16-05-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Estás compilándolo con alguna versión nueva de delphi?
Usa ansistring en lugar de string
Responder Con Cita
  #13  
Antiguo 19-05-2016
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Holaa

Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Estás compilándolo con alguna versión nueva de delphi?
Usa ansistring en lugar de string
Si el programa estaba echo en delpi 7 yo uso Delphi XE6 .- Voy a probar lo de AnsiString graciasss
Responder Con Cita
  #14  
Antiguo 19-05-2016
gdlrinfo gdlrinfo is offline
Miembro
 
Registrado: may 2007
Posts: 131
Poder: 17
gdlrinfo Va por buen camino
Ansichar

Amigos si uso el ANSI me trae en blanco todo :S Gracias .-
Responder Con Cita
  #15  
Antiguo 20-05-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Al menos, pon todo tu código.
Responder Con Cita
  #16  
Antiguo 30-05-2016
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Si es solo para guardar en un xml de manera que a simple vista no se vea y aparte no tengas problemas de codificación.
Código:
Function StrToHex(Const pcStr: String): String; Begin Result := ''; if pcStr <> '' then Begin SetLength(Result, Length(pcStr) * 2); BinToHex(@pcStr[1], @Result[1], Length(pcStr)); End; End; Function HexToStr(Const pcStr: String): String; Begin Result := ''; if pcStr <> '' then Begin SetLength(Result, Length(pcStr) Div 2); HexToBin(@pcStr[1], @Result[1], Length(pcStr)); End; End;
Estoy escribiendo desde un celular y de verdad tenia bastante tiempo sin colaborar.

Ese código te sirve para lo que quieres y aparte te evitas el problema de la codificación.

Enviado desde mi SM-G900H mediante Tapatalk
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #17  
Antiguo 30-05-2016
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Aqui se mejor
Código Delphi [-]
Function StrToHex(Const pcStr: String): String;
Begin
  Result := '';
  if pcStr <> '' then Begin
    SetLength(Result, Length(pcStr) * 2);
    BinToHex(@pcStr[1], @Result[1], Length(pcStr));
  End;
End;

Function HexToStr(Const pcStr: String): String;
Begin
  Result := '';
  if pcStr <> '' then Begin
    SetLength(Result, Length(pcStr) Div 2);
    HexToBin(@pcStr[1], @Result[1], Length(pcStr));
  End;
End;
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Encryptacion para memo o Blob vroa74 OOP 8 04-07-2007 21:03:48


La franja horaria es GMT +2. Ahora son las 06:25:49.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi