Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > Envío de registros y sus respuestas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-12-2024
gohermo gohermo is offline
Registrado
NULL
 
Registrado: abr 2014
Posts: 5
Poder: 0
gohermo Va por buen camino
Ejemplo para crear la Huella

Buenos días,
Estoy intentando hacer un programa en Visual Studio Basic para calcular la huella siguiendo el ejemplo en java que la AEAT expone en la documentación, y el resultado es diferente. Alguien podría compartir el código en Visual Studio Basic?

Expongo el código que estoy utilizando:

Código:
Imports System
Imports System.Security.Cryptography
Imports System.Text
Imports System.Web

Module Program
    Sub Main(args As String())
        Console.WriteLine(CalculaHuellaAlta("89890001K", "12345678/G33", "01-01-2024", "F1", "12.35", "123.45", "", "2024-01-01T19:20:30+01:00"))

    End Sub


    ' Genera el hash en formato Base16 (hexadecimal) en mayúsculas
    Public Function GetHashVerificada(msg As String) As String
        Try
            Dim digest As HashAlgorithm = SHA256.Create()
            Dim hash As Byte() = digest.ComputeHash(Encoding.UTF8.GetBytes(msg))

            ' Convertir el hash a formato hexadecimal en mayúsculas
            Dim sb As New StringBuilder()
            For Each b As Byte In hash
                sb.Append(b.ToString("X2")) ' X2 asegura mayúsculas
            Next
            Return sb.ToString()
        Catch ex As Exception
            Throw New ArgumentException("Error al generar la huella SHA", ex)
        End Try
    End Function

    ' Genera la referencia concatenada
    Public Function GetReferenciaRegistroAlta(nifEmisor As String, numFacturaSerie As String,
                                                     fechaExpedicion As String, tipoFactura As String,
                                                     cuotaTotal As String, importeTotal As String,
                                                     huellaAnterior As String, fechaHoraUsoRegistro As String) As String
        Dim sb As New StringBuilder()
        sb.Append(GetValorCampo("IDEmisorFactura", nifEmisor, True)) _
          .Append(GetValorCampo("NumSerieFactura", numFacturaSerie, True)) _
          .Append(GetValorCampo("FechaExpedicionFactura", fechaExpedicion, True)) _
          .Append(GetValorCampo("TipoFactura", tipoFactura, True)) _
          .Append(GetValorCampo("CuotaTotal", cuotaTotal, True)) _
          .Append(GetValorCampo("ImporteTotal", importeTotal, True)) _
          .Append(GetValorCampo("Huella", huellaAnterior, True)) _
          .Append(GetValorCampo("FechaHoraUsoRegistro", fechaHoraUsoRegistro, False))

        Return sb.ToString()
    End Function

    ' Concatena un campo con su valor y separador
    Public Function GetValorCampo(nombre As String, valor As String, separador As Boolean) As String
        If separador Then
            Return nombre & "=" & If(String.IsNullOrEmpty(valor), "", valor.Trim()) & ";"
        Else
            Return nombre & "=" & If(String.IsNullOrEmpty(valor), "", valor.Trim())
        End If
    End Function
    ' Calcula la huella completa
    Public Function CalculaHuellaAlta(nifEmisor As String, numFacturaSerie As String, fechaExpedicion As Date,
                                             tipoFactura As String, cuotaTotal As String, importeTotal As String,
                                             huellaAnterior As String, fechaHoraUsoRegistro As String) As String
        ' Genera la referencia concatenada
        Dim ref As String = GetReferenciaRegistroAlta(nifEmisor, numFacturaSerie, fechaExpedicion.ToString("yyyy-MM-dd"),
                                                      tipoFactura, cuotaTotal, importeTotal, huellaAnterior, fechaHoraUsoRegistro)

        ' Genera el hash en Base16
        Return GetHashVerificada(ref)
    End Function
End Module
Resultado obtenido: 07DCAADE3EA3216A80409A37359A5A53D48038F7BD2C61D51178CD7112C3E9FA
Resultado que debería de ser según la documentación de la AEAT: 3C464DAF61ACB827C65FDA19F352A4E3BDC2C640E9E9FC4CC058073F38F12F60

Gracias de antemano por la ayuda.

Saludos,

Última edición por Neftali [Germán.Estévez] fecha: 05-12-2024 a las 11:48:31. Razón: Añadir TAG's al código
Responder Con Cita
 



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
Software para control del personal con huella digital santiago14 Varios 3 15-03-2013 16:10:27
Componente para huella digital rex Varios 1 17-05-2006 18:33:52
Lector de Huella Digital para control de personal Mauro® Varios 2 05-05-2005 02:43:21
Scanner Huella Dactilar para delphi camc79 Varios 1 25-04-2004 20:36:56


La franja horaria es GMT +2. Ahora son las 19:06:32.


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