2014-11-02 5 views
0

다른이가이 내가의 DigestValue는 PHP

$nodoDocumento = $doc3 
     ->getElementsByTagName('factura') 
     ->item(0); 
    $content = $nodoDocumento->C14N(FALSE, TRUE); 
    // OR 
    $content = $nodoDocumento->C14N(TRUE, TRUE); 
    $actualDigest = base64_encode(hash('SHA1', $content, false)); 

으로 계산 한 다이제스트 값이 내게 준입니다

SF4D6+PX7VB2hDbnb59a4WrWMOk= 

자바에서 계산하는 다이제스트 값은

NDg1ZTAzZWJlM2Q3ZWQ1MDc2ODQzNmU3NmY5ZjVhZTE2YWQ2MzBlOQ== 

이 내 XML 파일입니다

백45경1천5백15조5백36억9천1백36만3천2백10
<?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>` 

답변

1

반환 값은 원시 이진 값 또는 소문자 hexits의 캐릭터가 $raw_output 제어 여부 세번째 파라미터

$actualDigest = base64_encode(hash('SHA1', $content, true)); 

보십시오. base64로 인코딩 된 SHA1이 필요한 경우 이진 값의 16 진수 표현 대신 원시 이진 값을 base64 인코딩해야합니다.