Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #25  
Antiguo 07-10-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Aprovecho para mostrarte como obtener el Hash MD5 de un archivo con la API de Windows tal y como lo utilicé en este ejemplo para cazar un virus: TerminateMD5_Process, a la caza de un virus...

Código PHP:
//---------------------------------------------------------------------------
#define MD5LEN  16
#define BUFSIZE 1024
typedef CHAR TMD5[33];


void GetMD5FromFile(CHAR* FileName, CHAR *MD5)
{
  
HANDLE hFile = 0;
  
HCRYPTPROV hProv = 0;
  
HCRYPTHASH hHash = 0;
  
BYTE Hash[MD5LEN];
  
DWORD bHash = 0;
  
DWORD bRead = 0;
  
BYTE* Buffer = (BYTE*)VirtualAlloc(0, BUFSIZE, MEM_COMMIT, PAGE_READWRITE);
  
hFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, 

NULL);
  if(
hFile != INVALID_HANDLE_VALUE){
    if(
CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)){
      if(
CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash)){
        while (
1) {
          
ReadFile(hFile, Buffer, BUFSIZE, &bRead, NULL);
          if(!
bRead) break;
          
CryptHashData(hHash, Buffer, bRead, 0);
        }
        
bHash = MD5LEN;
        if(
CryptGetHashParam(hHash, HP_HASHVAL, Hash, &bHash, 0)){
          for(
int i=0; i<2*MD5LEN; i++){
            
MD5[i] = (0x0F & Hash[i/2] >> 4*((i+1)%2)) + 48;
            if(
MD5[i] > '9') MD5[i] += 7;
          }
          
MD5[32] = 0;
        }
      }
      
CryptDestroyHash(hHash);
    }
    
CryptReleaseContext(hProv, 0);
  }
  
CloseHandle(hFile);
  
VirtualFree(Buffer, 0, MEM_RELEASE);
} 
Saludos.
Responder Con Cita
 


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
Ellas y Ellos jcarteagaf Humor 1 06-08-2011 03:43:05
Llamada entre ventana usando paquetes. PittyDelphi OOP 3 27-01-2011 12:28:37
¿Saben algo de ellos? roman La Taberna 11 18-11-2008 18:59:07
Comunicación TCP/IP entre dos programas usando componentes INDY Roger_Delphi Internet 2 20-10-2008 14:02:49
Comunicacion entre procesos walito Varios 0 14-11-2007 21:55:53


La franja horaria es GMT +2. Ahora son las 09:40:11.


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