Ver Mensaje Individual
  #761  
Antiguo 09-05-2023
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 51
Reputación: 11
ramherfer Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Algo así:


Código Delphi [-]
uses
  IdHash, IdHashSHA, IdGlobal, SysUtils;

function CalculateFileHash(const FileName: string): string;
var
  FileStream: TFileStream;
  SHA256Hash: TIdHashSHA256;
  HashBytes: TBytes;
begin
  FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    SHA256Hash := TIdHashSHA256.Create;
    try
      HashBytes := SHA256Hash.HashValue(FileStream);
      Result := LowerCase(BytesToHex(HashBytes));
    finally
      SHA256Hash.Free;
    end;
  finally
    FileStream.Free;
  end;
end;

// Ejemplo de uso:
procedure TForm1.Button1Click(Sender: TObject);
var
  FileName: string;
  HashValue: string;
begin
  FileName := 'ruta_del_archivo.xml';
  HashValue := CalculateFileHash(FileName);
  ShowMessage('Hash SHA256 del archivo XML: ' + HashValue);
end;
Gracias Casimiro, pero eso sería para crear el hash del fichero xml, pero lo que tiene que llevar es en el campo huella el hash sólo del contenido del nodo <RegistroFacturacion>contenido</RegistroFacturacion>. Entonces el problema es que no tengo ni pajolera idea de como pasar el nodo completo a widestring (por ejemplo) para calcular el hash del string y pasarlo al campo huella. Agradezco tu respuesta mil+1
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.
Responder Con Cita