Ver Mensaje Individual
  #60 (permalink)  
Antiguo 08/09/2010, 09:37
Baskes
 
Fecha de Ingreso: marzo-2004
Mensajes: 19
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Cita:
Iniciado por javalos532 Ver Mensaje
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.
No se ya resolviste tu problema, pero con este código, me da correcto.
Código:
            MD5 md5Hasher = new MD5CryptoServiceProvider();
            byte[] data = md5Hasher.ComputeHash(UTF8Encoding.UTF8.GetBytes(input));
            StringBuilder sBuilder = new StringBuilder();
            for (int i = 0; i <= data.Length - 1; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }            
            return sBuilder.ToString();
Pero en el caso de la cadena que esta de ejemplo en la página del Sat en este momento, no me funciona.

Ejemplo de Cadena Original:

||2.0|ABCD|2|03-05-2010T14:11:36|49|2008|INGRESO|UNA SOLA EXHIBICIÓN|
2000.00|00.00|2320.00|PAMC660606ER9|CONTRIBUYENTE PRUEBASEIS PATERNOSEIS
MATERNOSEIS|PRUEBA SEIS|6|6|PUEBLA CENTRO|PUEBLA|PUEBLA|PUEBLA||MÉXICO|
72000|CAUR390312S87|ROSA MARÍA CÁLDERON URIEGAS|TOPOCHICO|52|
JARDINES DEL VALLE|NUEVO LEÓN|MEXICO|95465|1.00|SERVICIO|01|
ASESORIA FISCAL Y ADMINISTRATIVA|2000.00|IVA|16.00|320.00||

Resultado de la digestión MD5 como HEX:

03abe73de4ca428816de4af6f6f737a7

Ami me da como resultado:
b64df6b8cbd7031c53ba5a1fe6ae4ab5

¿Alguna idea?