Это значение дайджеста, которое было рассчитано в Java
SF4D6+PX7VB2hDbnb59a4WrWMOk=
Это значение дайджеста, с которым я рассчитал
$nodoDocumento = $doc3
->getElementsByTagName('factura')
->item(0);
$content = $nodoDocumento->C14N(FALSE, TRUE);
// OR
$content = $nodoDocumento->C14N(TRUE, TRUE);
$actualDigest = base64_encode(hash('SHA1', $content, false));
дал мне
NDg1ZTAzZWJlM2Q3ZWQ1MDc2ODQzNmU3NmY5ZjVhZTE2YWQ2MzBlOQ==
и это мой XML-файл
<?xml version="1.0" encoding="UTF-8"?>
<factura id="comprobante" version="1.0.0">
<infoTributaria>
<ambiente>1</ambiente>
<tipoEmision>1</tipoEmision>
<razonSocial>Carrillo Serrano Juan Roberto</razonSocial>
<nombreComercial>Carrillos Team</nombreComercial>
<ruc>1703644805001</ruc>
<claveAcceso>2710201401170364480500110010010000000011234567812</claveAcceso>
<codDoc>01</codDoc>
<estab>001</estab>
<ptoEmi>001</ptoEmi>
<secuencial>000000001</secuencial>
<dirMatriz>La Condamine N16-37 y Solano </dirMatriz>
</infoTributaria>
<infoFactura>
<fechaEmision>27/10/2014</fechaEmision>
<dirEstablecimiento>La Condamine N16-37 y Solano</dirEstablecimiento>
<obligadoContabilidad>NO</obligadoContabilidad>
<tipoIdentificacionComprador>04</tipoIdentificacionComprador>
<razonSocialComprador>SALGRAF CIA. LTDA</razonSocialComprador>
<identificacionComprador>1792067464001</identificacionComprador>
<totalSinImpuestos>3500.00</totalSinImpuestos>
<totalDescuento>0.00</totalDescuento>
<totalConImpuestos>
<totalImpuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<baseImponible>3500.00</baseImponible>
<valor>420.00</valor>
</totalImpuesto>
</totalConImpuestos>
<propina>0.00</propina>
<importeTotal>3920.00</importeTotal>
<moneda>DOLAR</moneda>
</infoFactura>
<detalles>
<detalle>
<codigoPrincipal>001</codigoPrincipal>
<descripcion>DESARROLLO DE SOFTWARE</descripcion>
<cantidad>1</cantidad>
<precioUnitario>3500</precioUnitario>
<descuento>0</descuento>
<precioTotalSinImpuesto>3500.00</precioTotalSinImpuesto>
<impuestos>
<impuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<tarifa>12.00</tarifa>
<baseImponible>3500.00</baseImponible>
<valor>420.00</valor>
</impuesto>
</impuestos>
</detalle>
</detalles>
<infoAdicional>
<campoAdicional nombre="Dirección">Los Eucaliptos E1-374 y Av. 10 de Agosto
</campoAdicional>
<campoAdicional nombre="Teléfono">2471233 ext. 101</campoAdicional>
<campoAdicional nombre="Email">[email protected]</campoAdicional>
</infoAdicional>
</factura>`
Пытаться
$actualDigest = base64_encode(hash('SHA1', $content, true));
Третий параметр $raw_output
определяет, является ли возвращаемое значение необработанным двоичным значением или строкой шестнадцатеричных строчных букв. Если вам нужен SHA1 в кодировке base64, вам нужно кодировать сырое двоичное значение в base64 вместо шестнадцатеричного представления этого двоичного значения.
Других решений пока нет …