Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-06-2006
Iuconlas Iuconlas is offline
Miembro
 
Registrado: sep 2005
Posts: 25
Poder: 0
Iuconlas Va por buen camino
Desencriptar password sha1 con DCPcrypt

Hola a todos,
Estoy desarrollando una pequeña aplicación con la que desencriptar unos passwords encriptados con el método sha1. Mirado en el foro, en la sección de trucos y el amigo google he llegado a hacer algo pero no me funciona correctamente. Utilizo los componentes de DCPcrypt y el código de la aplicación sería el siguiente:

Funciones para desencriptar (están en la sección de trucos)
Código Delphi [-]
procedure TForm1.IniciarCifrador(var C: TDCP_Cipher; algoritmo, hash: byte; password: string);
begin
  case algoritmo of
   DCP_tea:      C := TDCP_tea.Create(nil);
   DCP_des:      C := TDCP_des.Create(nil);
   DCP_ice:      C := TDCP_ice.Create(nil);
   DCP_rc2:      C := TDCP_rc2.Create(nil);
   DCP_rc4:      C := TDCP_rc4.Create(nil);
   DCP_rc5:      C := TDCP_rc5.Create(nil);
   DCP_rc6:      C := TDCP_rc6.Create(nil);
   DCP_3des:     C := TDCP_3des.Create(nil);
   DCP_ice2:     C := TDCP_ice2.Create(nil);
   DCP_idea:     C := TDCP_idea.Create(nil);
   DCP_mars:     C := TDCP_mars.Create(nil);
   DCP_misty1:   C := TDCP_misty1.Create(nil);
   DCP_cast128:  C := TDCP_cast128.Create(nil);
   DCP_cast256:  C := TDCP_cast256.Create(nil);
   DCP_thinice:  C := TDCP_thinice.Create(nil);
   DCP_serpent:  C := TDCP_serpent.Create(nil);
   DCP_twofish:  C := TDCP_twofish.Create(nil);
   DCP_blowfish: C := TDCP_blowfish.Create(nil);
   DCP_rijndael: C := TDCP_rijndael.Create(nil);
  end;
  case hash of
    DCP_md4:       C.InitStr(password, TDCP_md4);
    DCP_md5:       C.InitStr(password, TDCP_md5);
    DCP_sha1:      C.InitStr(password, TDCP_sha1);
    DCP_haval:     C.InitStr(password, TDCP_haval);
    DCP_tiger:     C.InitStr(password, TDCP_tiger);
    DCP_sha256:    C.InitStr(password, TDCP_sha256);
    DCP_sha384:    C.InitStr(password, TDCP_sha384);
    DCP_sha512:    C.InitStr(password, TDCP_sha512);
    DCP_ripemd128: C.InitStr(password, TDCP_ripemd128);
    DCP_ripemd160: C.InitStr(password, TDCP_ripemd160);
  end;
end;

function TForm1.Cifrar(cadena, password: string; algoritmo,hash: byte; descifrar: boolean) : string;
var
  C: TDCP_Cipher;
begin
  Result := '';
  C := TDCP_Cipher.Create(nil);
  try
    IniciarCifrador(C, algoritmo, hash, password);
    if desCifrar then
      Result := C.DecryptString(cadena)
    else
      Result := C.EncryptString(cadena);
    C.Burn;
  finally
    C.Free;
  end;
end;

Llamada a la función:
Código Delphi [-]
PassDesEncriptado := Cifrar(PassEncriptado,'',DCP_sha1,sizeof(PassEncriptado),true);

Lo que me está devolviendo el string "PassDesEncriptado" es un conjunto de carácteres extraños que para nada son los passwords correctos.

Supongo que el problema estará en lo relativo a la llamada de la función porque es la parte de cosecha propia (no soy ni mucho menos programador profesional). Los parámetros en los que solicita el password y el hash no se que enviarle exactamente.
Gracias de antemano y un saludo a todos.
Responder Con Cita
  #2  
Antiguo 21-06-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A ver si te echa una mano:

Código Delphi [-]
{
  Vamos a cifrar y descifrar una cadena utilizando
  el algoritmo "Blowfish" y el "hash" "SHA1".
}

uses
  DCPconst,  // Constantes
  UCifrador; // Función Cifrar

procedure TForm1.Button1Click(Sender: TObject);
var
  c: string;
  s: string;
begin

  // Clave (password) para el cifrado
  c := 'claveparacifrar';

  // Cadena a cifrar (por ejemplo)
  s := 'Cadena a cifrar';

  // Ciframos la cadena
  s := Cifrar(s, c, DCP_blowfish, DCP_sha1, false);

  // Mostramos la cadena "cifrada"
  ShowMessage(s); // Muestra la cadena "s" cifrada

  // Desciframos la cadena
  s := Cifrar(s, c, DCP_blowfish, DCP_sha1, true);

  ShowMessage(s); // Muestra "Cadena a cifrar"
  // es decir, la cadena vuelta a descifrar...

end;

En todo caso echa un vistazo a la ayuda que acompañan a los componentes conque tratamos.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 21-06-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 22
Mick Va por buen camino
Sha1 es un tipo de hash no un metodo de encriptacion, lo que caracteriza un hash es precisamente que no se puede hacer la operacion contraria (calcular el texto original a partir del hash).
En definitiva no existe funcion de "desencriptacion" de un hash.
En la practica dado un hash determinado existen infinitas cadenas que producirian el mismo hash.
Existen metodos para intentar saber si una cadena genera determinado hash, pero el tema es distinto y mas complejo que una simple funcion, ataques de diccionario por ejemplo, consisten en utilizar un diccionario con miles o millones de palabras: aplicar el hash a cada una y ver si el resultado coincide con el hash original. O directamente por fuerza bruta en lugar de usar un diccionario de palabras probar a aplicar el hash a todos los millones o miles de millones de combinaciones de textos posibles de X letras.

Saludos
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
password tharsisj Varios 2 27-02-2005 11:03:27
Uso del CAPICOM para Encriptar / Desencriptar moesis Noticias 0 28-08-2004 02:22:57
List index out of bounds(6) al desencriptar nefy Varios 6 28-06-2004 19:07:20
Encriptar y desencriptar datos en una tabla!!! DarkByte Conexión con bases de datos 2 20-11-2003 17:04:30


La franja horaria es GMT +2. Ahora son las 11:07:21.


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