
Igual les puedo compartir mis avances

Se aceptan sugerencias.

Saludos a todos.
| |||
Facturas Digitales SAT - Mexico C# Hola grupo como estan, este tema es para ayudarnos mutuamente a quienes estamos trabajando en el desarrollo que hacienda ![]() Igual les puedo compartir mis avances ![]() Se aceptan sugerencias. ![]() Saludos a todos. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Por lo pronto les comento que estoy atorado en dos pasos: Cuando aplico la digestion MD5 no obtengo el valor que deberia ser, a mi me da siempre este valor: ce33abebf7f795780806c97d0e6e2c03 cuando deberia ser: 8aa2b617944427353697e694a2e35a07 y al final de todo mi proceso me genera el sello pero el certificado me da cadena vacia, me imagino que todo se debe al problema de inicio (MD5), pero igual nos vamos por partes. Alguien ya paso esta parte ? |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Estoy tratando de obtener el sello y certificado que deben de llevar las facturas electronicas, hasta ahorita llevo lo siguiente: 1) Se convierten los archivos .key .cer a .pem para su procesamiento. 2) Se genera la cadena original. 3) Se transforma la cadena en formato UTF-8 4) Se aplica digestion MD5. 5) Se genera el sello con el archivo key.pem 6) Se genera el certificado con el archivo cer.pem El problema lo tengo en los pasos 4 y 6, pero creo que el 6 no me genera informacion debido al problema del paso 4 |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Pongo el codigo de los pasos en el que no me da la digetion correcta que el SAT indica. // Introducimos la cadena original provista por el SAT string Strcadenaoriginal = "||A|1|2005-09-02T16:30:00|1|ISP900909Q88|Industrias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Léon|México|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|52|Jardines del Valle|Monterrey|Monterrey|Nuevo León|México|95465|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|52.5||"; // Metemos la cadena a un archivo de texto System.IO.File.WriteAllText(@"D:\SAT\Files\Out\Fil eOriginal.txt", strcadenaoriginal); // Transformamos la cadena a UTF8 string contenido; using (StreamReader sr = new StreamReader(@"D:\SAT\Files\Out\FileOriginal.txt", Encoding.GetEncoding(1252))) { contenido = sr.ReadToEnd(); } using (StreamWriter sw = new StreamWriter(@"D:\SAT\Files\Out\UTF8.txt", false, Encoding.UTF8)) { sw.Write(contenido); } //Aquí lo que hacemos es escribir un txt (MD5.txt) con la digestión MD5 para usarlo en el sellado Strcadena = ObtenerMd5(@"D:\SAT\Files\Out\UTF8.txt"); Para la digestion en MD5 utilizo la siguiente instruccion con OpenSSL D:\OpenSSL\bin\openssl.exe dgst -MD5 D:\SAT\Files\Out\UTF8.txt > D:\SAT\Files\Out\MD5.txt Pero aqui no llego al resultado del SAT.... a mi me da la siguiente cadena: ce33abebf7f795780806c97d0e6e2c03 y debe ser: 8aa2b617944427353697e694a2e35a07 Alguna idea de que me puede estar faltando ? Gracias. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# disculpa javalos532 como solucionaste el problema de la digestion MD5 del archivo de texto de la cadena opriginal , me arroja un resultado pero no el que marca el ejemplo del sat. agradeceria mucho tu ayuda. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Que tal Tony, todavia no logro solucionar esto... sigo atorado en la digestion MD5, en algunos foros he leido que puedo ser porque la cadena original no tiene el formato correcto que pide hacienda en el anexo pero ya copie una cadena que en teoria eta correcta y sigo sin poder llegar al valor correcto. Alguien ya encontre la solucion a esto ? ![]() |
| |||
![]() Hola buenas noches javalos532. Ya he logrado hacer los 6 pasos en OpenSSL, estoy en el proceso de cambiarlo a C# Por lo que veo estas haciendo la conversión de la cadena que va separada por los piper "|" mediante C#, al igual que tu hasta ahora no he sido capaz de realizarlo en C# pero ya lo he logrado de otra forma: 1.- Descargate notepad ++ e instalalo 2.- Copia el texto y pegalo en el notepad++ una vez pegado seleccionalo y te vas al menu Formato y seleccionas Convertir en UTF-8 sin ROM 3.- Guarda el archivo de texto 4.- abres el openssl.exe y con el comando dgst -md5 [nombre del archivo] compruebas que ahora si funcionara. De esta forma ya he realizado 2 ejemplos y dan correctos. El problema que presento ahora es que no puedo convertir correctamente la cadena en el formato utf8 en C#. Espero haber ayudado, saludos Edit: Ya fui capaz de codificar la cadena original a utf8 y aplicar el md5 hash desde C# Última edición por Adenial; 10/05/2010 a las 22:19 Razón: Actualización |
| |||
![]() Javalos532 ya e comprobado que que si esta bie la instruccio para obtener la digestion MD5 de la cadena original el problema es del archivo del sat . e comprobado y confirmado que es por el stadar diferente que usa el SAT. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Que tal Adenial, me puedes ayudar a ver porque no llego al valor que presenta el SAT ? para empezar utilizaste como ejemplo la misma cadena que yo ? Gracias de antemano. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Hola buenas tardes javalos532 Asi es, utilizé la misma cadena que tu que es la siguiente: ||A|1|2005-09-02T16:30:00|1|ISP900909Q88|Industrias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Léon|México|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|52|Jardines del Valle|Monterrey|Monterrey|Nuevo León|México|95465|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|52.5|| Cuyo md5 es: 8aa2b617944427353697e694a2e35a07 Tambien probe con esta otra cadena: ||2.0|A|1|2009-08-16T16:30:00|1|2009|ingreso|Una sola exhibición|350.00|5.25|397.25|ISP900909Q88|Industr ias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Léon|México|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|52|Jardines del Valle|Monterrey|Monterrey|Nuevo León|México|95465|10|Caja|Vasos decorados|20.00|200|1|pieza|Charola metálica|150.00|150|IVA|15.00|52.50|| Cuyo md5 es: 4cd8ed248d7a02314c50778a37d1522d Esta segunda cadena pertenece a un ejemplo completo que lo conseguí en la siguiente pagina: http://www.cryptosys.net/pki/Muestra_v2_test-200908.zip En ese archivo zip viene ya el txt con la cadena en formato utf8, intenta aplicar el hash md5 para ver si esta funcionando el md5. Pregunta ¿el digest md5 lo estas haciendo desde C# o con OpenSSL? Saludos. Última edición por Adenial; 11/05/2010 a las 12:52 Razón: Actualizacion |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Tengo las dos opciones: desde OpenSSL y desde C# pero con ninguna de las dos opciones llego al valor: 8aa2b617944427353697e694a2e35a07 como formateas la cadena utf-8 ? igual aqui puede ser mi problema... |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Guardé la cadena en un archivo txt con el programa notepad ++ convirtiendo el texto en formato utf8 ve mi primer post, en el escribí todos los pasos. Una vez que tengas el archivo en utf-8 con el openssl aplica el md5, te recomiendo que primero lo hagas con openssl y una vez que tengas el archivo txt que estes seguro que esta en formato utf8 (porque lo comprobaste con el openssl) apliques despues el md5 desde C#. Me dices si pudiste, si no de alguna forma te hago llegar el archivo en formato utf8 . Saludos |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Excelente Adenial ![]() Ya lograste obtener el sello y certificado ? yo solo logro obtener el sello, el certificado me genera el txt vacio... |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Que tal eh llegado a la digestion MD5 usando el openSSL en conjunto con vb.net el error que existe es que cuando la funcion donde guardamos el archivo recibe el parametro de codificar a utf 8 el archivo se guarda como UTF-8 pero al principio del archivo se agrega que la codificacion usada es UTF8 y por eso la digesion con el openSSL no da igual que en el sat intenta guardar el archivo sin darle codificacion y te funcionara. Dim cadenaoriginal As String = "||A|1|2005-09-02T16:30:00|1|ISP900909Q88|Industrias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Léon|México|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|52|Jardines del Valle|Monterrey|Monterrey|Nuevo León|México|95465|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|52.5||" System.IO.File.WriteAllText("C:\cadena.txt", CADENAORIGINAL) despues aplica la digestion MD5 al archivo cadena.txt y te regresara el resultado. Nota: No tenemos que darle el formato al archivo porque la instruccion usada ya la guarda en ese formato. Saludos. Última edición por thebman; 12/05/2010 a las 14:01 |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Hola buenas tardes javalos532. Ya he logrado obtener el sello y el certificado en OpenSSL, ahorita me encuentro adaptando todo a C#. Mas tarde cuando este en casa espero poder decirte cuales son las instrucciones para poder generar el certificado en OpenSSL yo tambien tuve ese problema que generaba un txt vacio. Lo que he hecho hasta ahora en C# es que en un textbox el usuario introduzca la cadena y mediante dos metodos convierto la cadena en formato utf8 y aplico el md5 obteniendo el valor deseado. En lo que ahorita estoy teniendo problemas es obtener el sello y certificado en C#, me estoy documentando para saber que librerias utilizar. Saludos, estamos pendientes. ![]() Última edición por Adenial; 12/05/2010 a las 13:58 Razón: Actualizacion |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Que tal pues bien solo para comentarles que voy en la etapa de validacion mi desarrollo esta en vb.net y ya abri un tema con todo lo que llevo hasta ahorita. Saludos [URL="http://www.forosdelweb.com/f29/factura-electroncia-sat-mexico-806167/#post3400290"] FacturaElectronica vb.net[/URL] |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Hola javalos532 Disculpa por tardarme tanto en contestar mira el sellado lo hago de la siguiente manera. Estoy usando OpenSSL para la version de windows El sellado lo hago en dos pasos que son los siguientes comandos: 1.- dgst -md5 -sign aaa010101aaa_CSD_01.key.pem -out sellado.txt muestra.txt 2.- enc -base64 -in sellado.txt -out sellado64.txt Donde: - aaa01010101aaa_CSD_01.key.pem es la llave .key convertida a .pem con openssl - sellado.txt es el archivo que se guardará de la digestión de la cadena y de sellarlo con la llave (si lo llegas abrir veras puros caracteres que parecen ser basura). - muestra.txt es la cadena original que ya se encuentra en formato utf-8. - sellado64.txt es el archivo donde se guarda la cadena encriptada en 64bits. Por ultimo abre el archivo sellado64.txt para que compares el sellado Nota: El archivos .pem y muestra.txt los tengo en el mismo directorio que el ejecutable openssl.exe y los archivos que genero se guardan en la misma dirección salvo que especifiques algun directorio en el comando. Preguntas: ¿Ya puedes generar la cadena original en C#? ¿Ya pudiste darle formato a utf-8 en C#? Saludos, me dices que tal te fue. ![]() |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Que tal Adenial, mira lo que he hecho hasta ahorita es que solo guardo la cadena original en un txt y nunca utilizo alguna funcion o libreria para convertir la cadena a utf-8, e inmediatamente despues aplico la digestion MD5 con OpenSSL y da la cadena correcta... ![]() Gracias al amigo thebman que nos dio este tip. ![]() Saludos. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Adenial aque te refieres con obtener el certificado. acaso te te refieres a extraer el contenido del certificado.pem quitandole la primera y ultima linea de -- biegin-- y ---end begin --- es eso. o hay que hacer algo mas aparte del sello. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# tonny053 Al archivo certificado.pem no le quito nada lo leo tal cual desde C# extrayendo toda su información (aun estoy realizando pruebas) en lo que estoy teniendo problemas es en leer la llave privada (.key.pem) desde C# para poder sellarlo con el hash de la cadena original. javalos532 Para aplicar el algoritmo MD5 en C# a la cadena original usé dos referencias la de using System.Security.Cryptography; <- para usar MD5CryptoServiceProvider y using System.Text; <- para System.Text.Encoding.UTF8. Saludos. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Adenial ya logre llegar a la digestion MD5 desde C# solo me falta generar el sello, nada mas que por cuestion de tiempo no he podido avanzar... pero cualquier duda o avance te lo hago saber. Gracias. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Perfecto me parece bien, yo estoy en lo mismo, no he podido leer correctamente la llave privada desde C# espero poder solucionarlo pronto, y de igual forma si logro hacerlo aqui pondré los avances. Saludos. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Saludos Adenial. Lei que ya hiciste los 6 pasos con OpenSSL, me podrias dar las instrucciones de como Instalo openssl, y las instrucciones que utilizaste para realizar los 6 pasos que menciona Javalos 532. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Buenas tardes a todos, es la primera vez que entro a este foro, les solicito ayuda para la generacion de sello digital, estoy programando en c#, no me cuadra el ejemplo que publica el SAT con lo que yo estoy generando con el MD5, les agradezco su ayuda. Saludos. hlq |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Este es el codigo que tengo para encriptar MD5 public static string Codificar(string input) { MD5 md5Hasher = MD5.Create(); byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(in put)); StringBuilder sBuilder = new StringBuilder(); for (int i = 0; i < data.Length; i++) { sBuilder.Append(data[i].ToString("x2")); } return sBuilder.ToString(); } |
Etiquetas: |