Ver Mensaje Individual
  #762  
Antiguo 10-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
Bueno pues ya lo tengo, he recibido ayuda de valor incalculable, Si no, no lo consigo ni de coña. Ojo que como ya se había hablado, es bien distinto calcular el hash con el fichero xml formateado indentado que sin formato evidentemente los CR LF varian el valor del Hash. ¿Cómo se tendrá que hacer? pues sorpresa, pero por lo menos lo está haciendo. Luego es más fácil corregir y adaptar que empezar desde cero. Las cosas deprisa y corriendo por muy claras que las tengas, no suelen salir igual.
Observaciones estoy creando el hash mientras estoy creando el xml.

Aquí va el código, cualquier sugerencia u objeción sería bien recibida.

Código:
   

var
   archivoXML: TXMLDocument;
   NDatosControl, NCabecera : IXMLNode;
   NodoSistema, NodoRegistroAltaFacturas, NodoRegistroFacturacion: IXMLNode;
   ContenidoNodoRegistroFacturacion: WideString;
   Huella: String;

    · · ·

    NDatosControl := NCabecera.AddChild( 'DatosControl' );
    Nodo := NDatosControl.AddChild( 'Huella' );
    //***** Calculo Hash RegistroFacturacion
    NodoSistema := archivoXML.DocumentElement;
    NodoregistroAltaFacturas := NodoSistema.ChildNodes.FindNode('RegistroAltaFacturas');
    if Assigned(NodoregistroAltaFacturas) then
    begin
      NodoRegistroFacturacion := NodoRegistroAltaFacturas.ChildNodes.FindNode('RegistroFacturacion');
      if Assigned(NodoRegistroFacturacion) then
        ContenidoNodoRegistroFacturacion := NodoRegistroFacturacion.XML;
    end;
    Huella := CalculaStrHashSHA256(ContenidoNodoRegistroFacturacion, checkBox1.Checked);
    //****** Fin calculo huella SHA256
    Nodo.Text := Huella;
    Nodo := NDatosControl.AddChild( 'TipoHash' );
    Nodo.Text := '01';

    · · ·
La función CalculaStrHashSHA256 esta contenida en una librería DLL. Si alguien necesita el código de la librería lo pongo, aunque es bien sencillo.
He comprobado los Hash resultantes con la herramienta online https://emn178.github.io/online-tools/sha256.html y en principio están perfectos.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.
Responder Con Cita