Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-06-2004
Avatar de nefy
nefy nefy is offline
No confirmado
 
Registrado: nov 2003
Posts: 171
Poder: 0
nefy Va por buen camino
List index out of bounds(6) al desencriptar

Hola tengo el siguiente problemilla, manejo una tabla de Passwords(Nombre y Contrasenya), la contraseña la encripto al guardarla en la tabla asi:
Código:
function Encryptar(const S: String; Key: Word): String;
var
  I: byte;
begin
  SetLength(Result,Length(S));
  for I := 1 to Length(S) do begin
    Result[i] := char(byte(S[i]) xor (Key shr 8));
    Key := (byte(Result[i]) + Key) * C1 + C2;
  end;
end;
y para validar una sesion desencripto el password asi:
Código:
function Desencryptar(const S: String; Key: Word): String;
  var
    I: byte;
  begin
    SetLength(Result,Length(S));
    for I := 1 to Length(S) do begin
      Result[i] := char(byte(S[i]) xor (Key shr 8));
      Key := (byte(S[i]) + Key) * C1 + C2;
    end;
  end;    //Codigo de trcuomania segun Borland
el problema que surge es q al validar un usuario que no sea el admnistrador me envia la Exeption antes mencionada, esto sin importar si el password es de uno o mas caracteres.

Nota: Ya he vaciado la tabla he insertado nuevos registros una y otra vez y ocurre lo mismo. Uso Delphi 6 y Paradox.

Salu2
Responder Con Cita
  #2  
Antiguo 26-06-2004
Avatar de nefy
nefy nefy is offline
No confirmado
 
Registrado: nov 2003
Posts: 171
Poder: 0
nefy Va por buen camino
Perdon me falto añadir q C1 y C2 son constantes (C1=52845 y C2=11719).
Responder Con Cita
  #3  
Antiguo 26-06-2004
El_Perrito El_Perrito is offline
Miembro
 
Registrado: ene 2004
Ubicación: Los Mochis, Mexico
Posts: 97
Poder: 21
El_Perrito Va por buen camino
Thumbs up

Puedes probar con las siguientes funciones, a mi me han funcionado:

Esta es para Encriptar

function TForm1.Cifra(Const Valor:String):String;
var
Indice:Integer;
cadena:String;
begin
for Indice:=1 to Length(Valor) do begin
cadena:=cadena+chr(StrToInt(IntToStr(ord(Valor[Indice])+Constante)));
end;
Result:=cadena;
end;

Esta para Desencriptar

function TForm1.DesCifra(Const Valor:String):String;
var
Indice:Integer;
cadena:String;
begin
for Indice:=1 to Length(Valor) do begin
cadena:=cadena+chr(StrToInt(IntToStr(ord(Valor[Indice])-Constante)));
end;
Result:=cadena;
end;
Responder Con Cita
  #4  
Antiguo 26-06-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Mirá, recién probé lo siguiente con tus rutinas y me anduvo 10 puntos:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
const
   PASSWORD = 'CLAVE PARA COLGAR ESTA APP CON UN CóDIGO LARGO';
var
   strEncriptado    : String;
   strDesEncriptado : String;
begin
   strEncriptado := Encryptar(PASSWORD, 6474);
   strDesEncriptado := Desencryptar(strEncriptado, 6474);
   ShowMessage(strEncriptado + #13 +  strDesEncriptado);
end;
Eso quiere decir que el error puede estar en la BD, pero eso entraría en otro foro
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #5  
Antiguo 26-06-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Creo que el problema está fuera de las rutinas, que se ven bastante sanas. Revisá las líneas posteriores a su llamada..

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 26-06-2004
Avatar de nefy
nefy nefy is offline
No confirmado
 
Registrado: nov 2003
Posts: 171
Poder: 0
nefy Va por buen camino
Parece ser que quizas sea esa solucion (checar codigo alrededor), ya lo he hecho pero tratare mas haber q pasa.

Salu2.
Responder Con Cita
  #7  
Antiguo 28-06-2004
Avatar de nefy
nefy nefy is offline
No confirmado
 
Registrado: nov 2003
Posts: 171
Poder: 0
nefy Va por buen camino
Pues ya cheque y la excepcion me la genera nada menos q en un locate:
Código:
   if (not TUsuarios.Locate('Nom_Usuario',nombre,[])) then
    begin
--
--
--
  end;
Ahora si que me quede sorprendido con esto, la verdad no veo la razon para q me envie dicho error aun y reintero q los envio con todos los usuarios excepto con "Administrador". Cual sera el bug?.
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


La franja horaria es GMT +2. Ahora son las 19:01: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