Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
Función de Delphi a C++

Buenas,

Resulta que tengo una aplicación en Delphi que me genera un fichero con una serie de cadenas con una simple encriptación XOR mediante esta función:

Código Delphi [-]
function DecryptString(const ToDecript: string; Key: Word): string;
var
  I: byte;
begin
  Result := '';
   RandSeed := Key;
   for i := 1 to Length(ToDecript) do
    Result := Result + Chr(Ord(ToDecript[i]) xor Random(256));
end;

El fichero encriptado lo voy a leer desde C++ y estoy intentando traducir esta función a C++ pero sin demasiada suerte

Código:
AnsiString __fastcall DecryptString(AnsiString ToDecript, unsigned int Key)
{
    AnsiString Result = "";

    RandSeed = Key;
    for (int i=1; i<=ToDecript.Length(); i++)
  {
        Result = Result + (((unsigned _int8)ToDecript[i]) ^ random(256));
  }

    return Result;
}
La cuestión es que al intentar desencriptar los datos, no me devuelve la cadena esperada.

Alguien puede hacerme la luz diciéndome dónde tengo el error? Gracias
Responder Con Cita
  #2  
Antiguo 11-09-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por ninguno Ver Mensaje
Código Delphi [-]
function DecryptString(const ToDecript: string; Key: Word): string;
var
  I: byte;
begin
  Result := '';
   RandSeed := Key;
   for i := 1 to Length(ToDecript) do
    Result := Result + Chr(Ord(ToDecript[i]) xor Random(256));
end;

La cuestión es que al intentar desencriptar los datos, no me devuelve la cadena esperada.
O estoy dormido o no hay manera de que nunca te devuelva la cadena esperada. Como cuernos sabe la función de desencriptado que valor asigno en una posición el random(256)?????

Cada vez que llamas a random(256) genera un numero aleatorio del 0 al 255, entonces al desencriptar como sabes con que numero desencriptar?
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #3  
Antiguo 11-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
Hola

Cita:
Empezado por donald shimoda Ver Mensaje
O estoy dormido o no hay manera de que nunca te devuelva la cadena esperada. Como cuernos sabe la función de desencriptado que valor asigno en una posición el random(256)?????

Cada vez que llamas a random(256) genera un numero aleatorio del 0 al 255, entonces al desencriptar como sabes con que numero desencriptar?
Sinceramente no sabría decirte del cierto, pero imagino que es gracias a RandSeed y que se le tiene que pasar la misma Key. Es un código que he encontrado por la web (y en varias páginas), no es mío.

Probado en Delphi la encriptación de una frase y la posterior desencriptación y funciona a las mil maravillas.

El problema lo sigo teniendo al pasarlo a C++, que no hay manera de que me funcione

Alguna sugerencia?

Gracias
Responder Con Cita
  #4  
Antiguo 11-09-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por ninguno Ver Mensaje
Hola

Sinceramente no sabría decirte del cierto, pero imagino que es gracias a RandSeed y que se le tiene que pasar la misma Key. Es un código que he encontrado por la web (y en varias páginas), no es mío.

Probado en Delphi la encriptación de una frase y la posterior desencriptación y funciona a las mil maravillas.

Gracias
Me llama mucho la atención como funciona, tienes un proyecto simple para probarlo en Delphi?

Saludos.
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #5  
Antiguo 11-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
Cita:
Empezado por donald shimoda Ver Mensaje
Me llama mucho la atención como funciona, tienes un proyecto simple para probarlo en Delphi?
Sí, claro, no hay problema, es tan sencillo como copiar esa función, poner 3 edits y 2 buttons y llamar a esa función desde los buttons.....

Pero alguien puede ayudarme a pasar esa función a C++??
Archivos Adjuntos
Tipo de Archivo: zip test.zip (3,9 KB, 8 visitas)
Responder Con Cita
  #6  
Antiguo 11-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Código:
 
Result = Result + (((unsigned _int8)ToDecript[i]) ^ random(256);
no deberia ser

Código:
Result = Result + (((unsigned_int8)ToDecript[i]) ^ random(256));
?

suponiendo que los tipos sean correctos (unsigned_int8, AnsiString).Quizas deberias probarlo con unsigned char * directamente, y i = 0; i<Length...
Responder Con Cita
Respuesta



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
Uso de la funcion en delphi 7 jedinds OOP 1 19-05-2008 04:00:32
Funcion Delphi en SQL raverri SQL 10 16-07-2007 18:07:47
Traduccion de función VB a delphi !!! Jan_polero API de Windows 2 07-02-2005 12:32:54
Funcion Nz en delphi?? NuncaMas Varios 1 24-12-2003 14:51:31
funcion delphi Ramon Varios 1 13-05-2003 12:45:03


La franja horaria es GMT +2. Ahora son las 16:32:40.


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