Página 2 de 4

Re: Generacion de Sello Digital paso a paso

Publicado: Jue Dic 02, 2010 11:53 am
por vivi
hola, soy totalmente novata en esto de las facturas electronicas, mira yo estoy trabajando en java (netbeans) y bueno, ya puedo obtener mi md5, lo he comprobado con muchas cadenas y todo bien. Ahora el problema es que no se que librerias usar en java y no encuentro información para realizar el paso 6 que ya es hacer el sello. He leido que seria bueno usar la libreria "bouncyCastle" he notado que tu la llamas boundycastle, es lo mismo? y he buscado informacion sobre como usar la libreria pero no he tenido exito en lo que deseo. Espero me puedas recomendar algun lugar... saludos ;)

Re: Generacion de Sello Digital paso a paso

Publicado: Jue Dic 02, 2010 11:58 am
por Dado
vivi escribió:hola, soy totalmente novata en esto de las facturas electronicas, mira yo estoy trabajando en java (netbeans) y bueno, ya puedo obtener mi md5, lo he comprobado con muchas cadenas y todo bien. Ahora el problema es que no se que librerias usar en java y no encuentro información para realizar el paso 6 que ya es hacer el sello. He leido que seria bueno usar la libreria "bouncyCastle" he notado que tu la llamas boundycastle, es lo mismo? y he buscado informacion sobre como usar la libreria pero no he tenido exito en lo que deseo. Espero me puedas recomendar algun lugar... saludos ;)


Ups, error de dedo, boundycastle = bouncycastle, es lo mismo.

Siento no poder ayudarte, no conozco ni Java ni la libreria bouncy castle, por lugares para recomendar.....deja le pregunto al maestro google y si encuentro algo te aviso.

Re: Generacion de Sello Digital paso a paso

Publicado: Jue Dic 02, 2010 3:34 pm
por ironman
Vivi, yo programo en Java y no habia leido/escuchado de esa libreria. Prometo echarme un clavado y te comento al respecto. Saludos

Re: Generacion de Sello Digital paso a paso

Publicado: Mar Dic 07, 2010 8:09 am
por ironman
Como dato técnico, el applet del SAT para validar CFD utiliza la libreria de BouncyCastle...

Re: Generacion de Sello Digital paso a paso

Publicado: Mié Dic 08, 2010 4:50 pm
por gopac
En el paso 0 tienes un XML y un certificado, pero este certificado no es de este XML, a mi entender es netamente ilustrativo?
ya que si lo validas con SAT upss; el certificado es terminación 0800 y en el XML es terminación 2517

Re: Generacion de Sello Digital paso a paso

Publicado: Jue Dic 09, 2010 8:10 am
por Dado
gopac escribió:En el paso 0 tienes un XML y un certificado, pero este certificado no es de este XML, a mi entender es netamente ilustrativo?
ya que si lo validas con SAT upss; el certificado es terminación 0800 y en el XML es terminación 2517


Si tienes razon, el XML define un noCertificado distinto al certificado *.cer

Hay que corregir el atributo noCertificado.

Re: Generacion de Sello Digital paso a paso

Publicado: Jue Dic 09, 2010 11:47 am
por jblancas
Hola dado,

El día lunes hice una pregunta respecto a la FIRMA ELECTRÓNICA de documentos y amablemente me recomendaste algunos links para responder mis dudas, es por eso que ahora respondo en esta entrada...

Segui todos los pasos que recomendaste en esta entrada para generar el sello digital, solo que lo aplique a mi necesidad en particular que es la firma electrónica de documentos, te comento como lo hice:

1.- Descargue la cadena que usas en el ejemplo, el que ya esta libre de espacios, y los certificados.

||2.0|ABC|1234|2010-01-01T12:12:12|12345|2010|ingreso|Pago en una sola exhibicion|68.50|79.46|UCP090807ABC|UAMERO & Compañia SA de CV|Cuba|456|Col. Latinoamerica|Oaxaca|Oaxaca|Oaxaca|México|93736|MMC090909QWE|Mi Mejor Cliente SA de CV|Calle 5 de Mayo|345|Col. Bondojito|Guadalajara|Guadalajara|Guadalajara|México|48473|1|Pieza|Lapiz Berol del No. 2|2.50|2.50|12|Pieza|Borrador Saga|5.00|60.00|3|Pieza|Pluma Bic Negra|2.00|6.00|IVA|16.00|10.96|10.96||

2.- Codifico a UTF-8

3.- De la cadena resultante del paso 2 obtengo el hash correspondiente con SHA-1, y obtengo este resultado:
AE8CCF6AE672B81C9A1F33557F87A6D2DDEC02D4
4.- Hasta aquí todo concuerda con tu ejemplo, pero al firmar con el archivo aaa010101aaa_csd_01.key obtengo este resultado:

HHSgXwj7B8NbH49lCNMYZv5QFJc5i4INjODJvcIQ5j/6UM0L734TIgbDZUYXp9ovEUzUOxTlwYep6vxlV0LtHwER8ROY7RlcDDKvkYRGXcF
hrIWJg5fP+BN4GOFL2S3n8rfhhhGH3+8gMxLdMKVftmgs2/E/ErQb9KHdAJsYW5U=

Es aquí donde entro en panico... pues estaba tan cerca de lograrlo... en fin, después estuve haciendo diferentes hipótesis:

a) En realidad el Hash que tu obtienes y el que yio obtengo no es exactamente igual, debido a que uno esta en mayúsculas y otro en minúsculas...
ae8ccf6ae672b81c9a1f33557f87a6d2ddec02d4 <> AE8CCF6AE672B81C9A1F33557F87A6D2DDEC02D4

así que pruebo firmando la cadena en minusculas: ae8ccf6ae672b81c9a1f33557f87a6d2ddec02d4 y el resultado de mi firma es este:

M71dYS89XWSrLRMUBucHg8krkqaQ7O1t561P4tk+9dVIaUic2q60qzOpfMWaeDXp+tcSxSO5qZsSsBFGCa06K6AgFicJae/Y3zJvjf0X6m/C4kz
9hxPkk3ppQ5hncKnVbRd8TIgUlVM2xIaS9zvabB4AlMWLoGSE9zpnoDCWXGY=

nuevamente no coincide con el que muestras... así que formula otra hipótesis.

b) Debe tener algo que ver el little-endian byte ordering que es el que yo estaba usando, pero quiza ustedes lo hacen con el big-endian, así que modifico mi código y firmo nuevamente, pero obtengo este otro sello:

ZlyWMKBnOveEZKCLxZQAHmzaO/eShsQ2U5UUiEx8F23VqXBnmENpepPkE4f9TOLCb+oX/Y1vMt/Y72kJJxYgoCs6rQlGEbASm6m5I8US1/rpNXiaxXy
pM6u0rtqcSGlI1fU+2eJPredt7eyQppIryYMH5wYUEy2rZF09L2FdvTM=

Así que quedo demostrado que mis hipotesis no eran correctas, así que ahora quedo nuevamente con la duda... ¿cómo se que mi sello es valido?

Personalmente estoy utilizando esta dll Chilkat.dll, http://www.example-code.com/csharp/rsa_sign_key_cer.asp y aquí existe un método para verificar la firma con la llave publica, *.cer , y la validación me dice que todo anda bien....

¿si una aplicación externa lo desea validar... que resultado le arrojara?

pues me parece que ya estoy cerca de concluir el asunto, debe haber alguna falla minima, pero en el foro pude aclarar muchas dudas que tenia al respecto...

Espero tus comentarios y el de los demas visitantes del foro, seguro en su experiencia, esto ya lo burlaron desde hace mucho...

Saludos y que tengan buen día :)


Resumen de los sellos obtenidos:

[b]cadena[/b]: ae8ccf6ae672b81c9a1f33557f87a6d2ddec02d4

Little endian: M71dYS89XWSrLRMUBucHg8krkqaQ7O1t561P4tk+9dVIaUic2q60qzOpfMWaeDXp+tcSxSO5qZsSsBFGCa06K6AgFicJae/Y3zJvjf0X6m/
C4kz9hxPkk3ppQ5hncKnVbRd8TIgUlVM2xIaS9zvabB4AlMWLoGSE9zpnoDCWXGY=
Big endian: ZlyWMKBnOveEZKCLxZQAHmzaO/eShsQ2U5UUiEx8F23VqXBnmENpepPkE4f9TOLCb+oX/Y1vMt/Y72kJJxYgoCs6rQlGEbASm6m5I8US1/rpNXiaxXypM6u0rtqcS
GlI1fU+2eJPredt7eyQppIryYMH5wYUEy2rZF09L2FdvTM=

cadena: AE8CCF6AE672B81C9A1F33557F87A6D2DDEC02D4

Big endian: lVsYmwDdofQbtBI/8dssaLZfpTDdEjMg79+HEYbht/LnLdlL4Rh4E/jPl4OJhaxhwV1GhJGvMgxcGe2YE/ERAR/tQldl/Oqph8HlFDvUTBEv2qcXRmXDBiITfu8LzVD6
P+YQwr3J4IwNgos5lxRQ/mYY0whljx9bwwf7CF+gdBw=
Little endian: HHSgXwj7B8NbH49lCNMYZv5QFJc5i4INjODJvcIQ5j/6UM0L734TIgbDZUYXp9ovEUzUOxTlwYep6vxlV0LtHwER8ROY7RlcDDKvkYRGXcFhrIWJg5fP+BN4GOF
L2S3n8rfhhhGH3+8gMxLdMKVftmgs2/E/ErQb9KHdAJsYW5U=


Esteban

Re: Generacion de Sello Digital paso a paso

Publicado: Jue Dic 09, 2010 12:10 pm
por Dado
Primero, aclarar varios conceptos.

El hash MD5 arroja una cadena de NUMEROS HEXADECIMALES, asi que tenemos la igualdad siguiente :

ae8ccf6ae672b81c9a1f33557f87a6d2ddec02d4 = AE8CCF6AE672B81C9A1F33557F87A6D2DDEC02D4

A partir de aqui entonces debes revisar la libreria para el sellado ya que no deberia arrojar dos sellos distintos.

De wikipedia :

La codificación del MD5 de 128 bits es representada típicamente como un número de 32 dígitos hexadecimal. El siguiente código de 28 bytes ASCII será tratado con MD5 y veremos su correspondiente hash de salida:

MD5("Esto sí es una prueba de MD5") = e99008846853ff3b725c27315e469fbc


Para validar "de forma externa" debes seguir la liga que te decia aqui

Otro dato MUY IMPORTANTE, es posible que ESTES GENERANDO BIEN EL SELLO, NECESITAS VALIDARLO para saber si estas bien o no, en este hilo menciono que es posible TENER DOS SELLOS TOTALMENTE DISTINTO PERO VALIDOS
y ahi muestro un ejemplo de que esto es posible.

Re: Generacion de Sello Digital paso a paso

Publicado: Jue Dic 09, 2010 11:21 pm
por condor0086
dado escribió:
El hash MD5 arroja una cadena de NUMEROS HEXADECIMALES, asi que tenemos la igualdad siguiente :

ae8ccf6ae672b81c9a1f33557f87a6d2ddec02d4 = AE8CCF6AE672B81C9A1F33557F87A6D2DDEC02D4


jblancas,

¿No será tu problema que firmas el STRING "ae8ccf6ae672b81c9a1f33557f87a6d2ddec02d4" en vez de la cadena que está representando en su notación hexadecimal?

Comentario al aire, no analicé a fondo todo tu post....

Saludos

Re: Generacion de Sello Digital paso a paso

Publicado: Jue Dic 16, 2010 1:58 am
por mroblesp
Que buena guía. Yo utilizo Progress y me sirvió muchisimo.
Gracias