Validacion del sello incorrecta
Publicado: Mié Sep 26, 2012 10:39 am
Sello invalido
hola buenos dias a todos vengo solicitando ayudad para poder crear de forma correcta mi sello el problema es que creo el sello pero no me lo creo bien
estra es mi cadena original: ' cadena tambien coincide con el validador del sat
||2.2|FS|46|2012-09-07T13:04:47|123456|2012|ingreso|Pago en una sola exhibición|Condición de pago Contado Plazo 20 Vencimiento 27/09/2012|1000.00|1160.00|Efectivo|CULIACAN, SINALOA|7891|BSY020620MB9|BM SYSTEMS S.C.|Alaba de acosta|1814|Miguel Hidalgo|CULIACAN, SINALOA|Culiacán|Sinaloa|México|80090|Persona moral con fines lucrativos|BTA010519NA9|BOUTIQUE ANDERSON NEW YORK|Alba de acosta|1814|Miguel Hidalgo|Culiacán|Sinaloa|México|1.000|PZA|1|Mantenimiento 2|1000.00|1000.00|IVA|16.0000|160.00|160.00||
este es como deberia ser el sello:
f1zcSDH87GZZ0w0a4vDipr78pfEm8ekjH1Elq4OV4VNfzpnzCdg1v6EsjRtghoaWeiQNWwgcELAAYCT4hj3u3qjO95XL07IMjmbvzRunY78QRyGyxlLZIZGM4wrH36OD
+p5pSG3678YsTVFN0ufqwXgv4O3ZKPew6KdfkKzJUlw=
esta es el sello qe obtengo con mi codigo:
pThHNiRiayMmVL1qKirE0z2O1rZq6XKJbFgOebeARs5KB8pEmt2/Xa7Z2Hmf37j3s4riFOi+4naRQXFe6U/38y2M/On6GAFszfG1c25TTusUoxGTLA6zbcHU/VProjPT
+ZqpMesMw83yvTFVQdwTskj9RHOwSI4YsjxdvDTHn98=
este es el sha1: este concide con el validador del sat
1856ebf60b32efd5a6156844c5ecf4129f08ed93
mi duda es en que me estoy equivocando si es en el sha o en key o si tengo mal hecha mi cadena
igualmente les adjunto mi codigo por si tienen una duda esta realizado en vb.net 2010
Dim filename As String = Path.GetFileName(FileUpload1.FileName)
Dim xmlFile As String = Server.MapPath(filename)
Dim transform As New Xsl.XslCompiledTransform
Dim document As New XmlDocument
Dim navigator As XPath.XPathNavigator
Dim ruta_sat As String = Server.MapPath("~/cadenaoriginal_2_2.xslt")
Dim output As New StringWriter
document.Load(xmlFile)
navigator = document.CreateNavigator()
transform.Load(ruta_sat)
transform.Transform(navigator, Nothing, output)
cadOriginal = output.ToString
System.IO.File.WriteAllText("C:\fepruebas\cadena.txt", cadOriginal)
'CREAMOS EL SHA1
Dim process As New Process
process.StartInfo.WindowStyle = ProcessWindowStyle.Minimized
process.StartInfo.FileName = "C:\openssl-0.9.8k_WIN32\bin\openssl.exe" 'le ponemos el nombre del archivo q hara la encriptacion (la ruta del openssl.exe)
process.StartInfo.Arguments = "dgst -SHA1 C:\fepruebas\cadena.txt" 'le madamos solo un parametro. (el nombre del archivo .txt q contiene la cadena original)
process.StartInfo.WorkingDirectory = "C:\openssl-0.9.8k_WIN32\bin" 'esto es para poner el direcctorio inicial en el q iniciara el proceso
process.StartInfo.UseShellExecute = False 'esto es para decirle q no usaremos el shell del sistema operativo
process.StartInfo.ErrorDialog = False 'esto es para omitir cualquier mensaje de error del proceso a ejecutar
process.StartInfo.RedirectStandardOutput = True 'esto es para decirle q vamos a escribir (o utiliar) el resultado de la secuencia (o sea el resultado encriptado)
process.Start() 'iniciamos el proceso
Dim codificado As String 'creamos una varaible q almacenara el resultado encriptado
codificado = process.StandardOutput.ReadToEnd 'el resultado del parametro "dgst -SHA1 d:\cadena.txt" se almacena en esta variable
process.WaitForExit() 'le decimos q se espere el proceso
'ahora, al resultado lo pasamos en un ciclo for para quitarle la
'parte del sha1 y q solo nos quede el resultado
Dim codificado2 As String = ""
For i As Integer = 0 To codificado.Length - 1
If codificado.Chars(i) = "=" Then
codificado2 = Mid(codificado, i + 3) 'seleccionamos desde la psicion en la q se quedo hasta al final de la cadena y eso se lo pasamos a codigificado2
End If
Next
System.IO.File.WriteAllText("C:\fepruebas\codificado.txt", codificado2) 'escribimos el resultado en otro archivo de texto
'CREAMOS EL ARCHIVO .KEY.PEN
Dim process2 As New Process
process2.StartInfo.WindowStyle = ProcessWindowStyle.Minimized
process2.StartInfo.FileName = "C:\openssl-0.9.8k_WIN32\bin\openssl.exe" 'le ponemos el nombre del archivo q hara la encriptacion (la ruta del openssl.exe)
process2.StartInfo.Arguments = "pkcs8 -inform DER -in C:\fepruebas\aaa010101aaa__CSD_01.key -passin pass:********* -out C:\fepruebas\aaa010101aaa_CSD_01.key.pem" 'le madamos solo un parametro.
process2.StartInfo.WorkingDirectory = "C:\openssl-0.9.8k_WIN32\bin" 'esto es para poner el direcctorio inicial en el q iniciara el proceso
process2.StartInfo.UseShellExecute = False 'esto es para decirle q no usaremos el shell del sistema operativo
process2.StartInfo.ErrorDialog = False 'esto es para omitir cualquier mensaje de error del proceso a ejecutar
process2.StartInfo.RedirectStandardOutput = True 'esto es para decirle q vamos a escribir (o utiliar) el resultado de la secuencia (o sea el resultado encriptado)
process2.Start() 'iniciamos el proceso
process2.WaitForExit() 'le decimos q se espere el proceso
'CREAMOS EL SELLO
'C:\OpenSSL\bin>openssl dgst -sign D:\Cer_Sellos\aaa010101aaa_CSD_01.key.pem D:\codificado.txt | openssl enc -base64 -A > D:\sello.txt
Dim process3 As New Process
process3.StartInfo.WindowStyle = ProcessWindowStyle.Minimized
process3.StartInfo.FileName = "C:\openssl-0.9.8k_WIN32\bin\openssl.exe" 'le ponemos el nombre del archivo q hara la encriptacion (la ruta del openssl.exe)
process3.StartInfo.Arguments = "dgst -sign C:\fepruebas\aaa010101aaa_CSD_01.key.pem C:\fepruebas\codificado.txt" 'le madamos solo un parametro.
process3.StartInfo.WorkingDirectory = "C:\openssl-0.9.8k_WIN32\bin" 'esto es para poner el direcctorio inicial en el q iniciara el proceso
process3.StartInfo.UseShellExecute = False 'esto es para decirle q no usaremos el shell del sistema operativo
process3.StartInfo.ErrorDialog = False 'esto es para omitir cualquier mensaje de error del proceso a ejecutar
process3.StartInfo.RedirectStandardOutput = True 'esto es para decirle q vamos a escribir (o utiliar) el resultado de la secuencia (o sea el resultado encriptado)
process3.Start() 'iniciamos el proceso
Dim SelloTxt As String 'creamos una varaible q almacenara el resultado encriptado
SelloTxt = process3.StandardOutput.ReadToEnd
Dim b64 As String = Convert.ToBase64String(Encoding.Default.GetBytes(SelloTxt)) 'decodificamos el resultado en base 64
process3.WaitForExit() 'le decimos q se espere el proceso
System.IO.File.WriteAllText("C:\fepruebas\sello.txt", b64) 'escribimos el resultado en otro archivo de texto
hola buenos dias a todos vengo solicitando ayudad para poder crear de forma correcta mi sello el problema es que creo el sello pero no me lo creo bien
estra es mi cadena original: ' cadena tambien coincide con el validador del sat
||2.2|FS|46|2012-09-07T13:04:47|123456|2012|ingreso|Pago en una sola exhibición|Condición de pago Contado Plazo 20 Vencimiento 27/09/2012|1000.00|1160.00|Efectivo|CULIACAN, SINALOA|7891|BSY020620MB9|BM SYSTEMS S.C.|Alaba de acosta|1814|Miguel Hidalgo|CULIACAN, SINALOA|Culiacán|Sinaloa|México|80090|Persona moral con fines lucrativos|BTA010519NA9|BOUTIQUE ANDERSON NEW YORK|Alba de acosta|1814|Miguel Hidalgo|Culiacán|Sinaloa|México|1.000|PZA|1|Mantenimiento 2|1000.00|1000.00|IVA|16.0000|160.00|160.00||
este es como deberia ser el sello:
f1zcSDH87GZZ0w0a4vDipr78pfEm8ekjH1Elq4OV4VNfzpnzCdg1v6EsjRtghoaWeiQNWwgcELAAYCT4hj3u3qjO95XL07IMjmbvzRunY78QRyGyxlLZIZGM4wrH36OD
+p5pSG3678YsTVFN0ufqwXgv4O3ZKPew6KdfkKzJUlw=
esta es el sello qe obtengo con mi codigo:
pThHNiRiayMmVL1qKirE0z2O1rZq6XKJbFgOebeARs5KB8pEmt2/Xa7Z2Hmf37j3s4riFOi+4naRQXFe6U/38y2M/On6GAFszfG1c25TTusUoxGTLA6zbcHU/VProjPT
+ZqpMesMw83yvTFVQdwTskj9RHOwSI4YsjxdvDTHn98=
este es el sha1: este concide con el validador del sat
1856ebf60b32efd5a6156844c5ecf4129f08ed93
mi duda es en que me estoy equivocando si es en el sha o en key o si tengo mal hecha mi cadena
igualmente les adjunto mi codigo por si tienen una duda esta realizado en vb.net 2010
Dim filename As String = Path.GetFileName(FileUpload1.FileName)
Dim xmlFile As String = Server.MapPath(filename)
Dim transform As New Xsl.XslCompiledTransform
Dim document As New XmlDocument
Dim navigator As XPath.XPathNavigator
Dim ruta_sat As String = Server.MapPath("~/cadenaoriginal_2_2.xslt")
Dim output As New StringWriter
document.Load(xmlFile)
navigator = document.CreateNavigator()
transform.Load(ruta_sat)
transform.Transform(navigator, Nothing, output)
cadOriginal = output.ToString
System.IO.File.WriteAllText("C:\fepruebas\cadena.txt", cadOriginal)
'CREAMOS EL SHA1
Dim process As New Process
process.StartInfo.WindowStyle = ProcessWindowStyle.Minimized
process.StartInfo.FileName = "C:\openssl-0.9.8k_WIN32\bin\openssl.exe" 'le ponemos el nombre del archivo q hara la encriptacion (la ruta del openssl.exe)
process.StartInfo.Arguments = "dgst -SHA1 C:\fepruebas\cadena.txt" 'le madamos solo un parametro. (el nombre del archivo .txt q contiene la cadena original)
process.StartInfo.WorkingDirectory = "C:\openssl-0.9.8k_WIN32\bin" 'esto es para poner el direcctorio inicial en el q iniciara el proceso
process.StartInfo.UseShellExecute = False 'esto es para decirle q no usaremos el shell del sistema operativo
process.StartInfo.ErrorDialog = False 'esto es para omitir cualquier mensaje de error del proceso a ejecutar
process.StartInfo.RedirectStandardOutput = True 'esto es para decirle q vamos a escribir (o utiliar) el resultado de la secuencia (o sea el resultado encriptado)
process.Start() 'iniciamos el proceso
Dim codificado As String 'creamos una varaible q almacenara el resultado encriptado
codificado = process.StandardOutput.ReadToEnd 'el resultado del parametro "dgst -SHA1 d:\cadena.txt" se almacena en esta variable
process.WaitForExit() 'le decimos q se espere el proceso
'ahora, al resultado lo pasamos en un ciclo for para quitarle la
'parte del sha1 y q solo nos quede el resultado
Dim codificado2 As String = ""
For i As Integer = 0 To codificado.Length - 1
If codificado.Chars(i) = "=" Then
codificado2 = Mid(codificado, i + 3) 'seleccionamos desde la psicion en la q se quedo hasta al final de la cadena y eso se lo pasamos a codigificado2
End If
Next
System.IO.File.WriteAllText("C:\fepruebas\codificado.txt", codificado2) 'escribimos el resultado en otro archivo de texto
'CREAMOS EL ARCHIVO .KEY.PEN
Dim process2 As New Process
process2.StartInfo.WindowStyle = ProcessWindowStyle.Minimized
process2.StartInfo.FileName = "C:\openssl-0.9.8k_WIN32\bin\openssl.exe" 'le ponemos el nombre del archivo q hara la encriptacion (la ruta del openssl.exe)
process2.StartInfo.Arguments = "pkcs8 -inform DER -in C:\fepruebas\aaa010101aaa__CSD_01.key -passin pass:********* -out C:\fepruebas\aaa010101aaa_CSD_01.key.pem" 'le madamos solo un parametro.
process2.StartInfo.WorkingDirectory = "C:\openssl-0.9.8k_WIN32\bin" 'esto es para poner el direcctorio inicial en el q iniciara el proceso
process2.StartInfo.UseShellExecute = False 'esto es para decirle q no usaremos el shell del sistema operativo
process2.StartInfo.ErrorDialog = False 'esto es para omitir cualquier mensaje de error del proceso a ejecutar
process2.StartInfo.RedirectStandardOutput = True 'esto es para decirle q vamos a escribir (o utiliar) el resultado de la secuencia (o sea el resultado encriptado)
process2.Start() 'iniciamos el proceso
process2.WaitForExit() 'le decimos q se espere el proceso
'CREAMOS EL SELLO
'C:\OpenSSL\bin>openssl dgst -sign D:\Cer_Sellos\aaa010101aaa_CSD_01.key.pem D:\codificado.txt | openssl enc -base64 -A > D:\sello.txt
Dim process3 As New Process
process3.StartInfo.WindowStyle = ProcessWindowStyle.Minimized
process3.StartInfo.FileName = "C:\openssl-0.9.8k_WIN32\bin\openssl.exe" 'le ponemos el nombre del archivo q hara la encriptacion (la ruta del openssl.exe)
process3.StartInfo.Arguments = "dgst -sign C:\fepruebas\aaa010101aaa_CSD_01.key.pem C:\fepruebas\codificado.txt" 'le madamos solo un parametro.
process3.StartInfo.WorkingDirectory = "C:\openssl-0.9.8k_WIN32\bin" 'esto es para poner el direcctorio inicial en el q iniciara el proceso
process3.StartInfo.UseShellExecute = False 'esto es para decirle q no usaremos el shell del sistema operativo
process3.StartInfo.ErrorDialog = False 'esto es para omitir cualquier mensaje de error del proceso a ejecutar
process3.StartInfo.RedirectStandardOutput = True 'esto es para decirle q vamos a escribir (o utiliar) el resultado de la secuencia (o sea el resultado encriptado)
process3.Start() 'iniciamos el proceso
Dim SelloTxt As String 'creamos una varaible q almacenara el resultado encriptado
SelloTxt = process3.StandardOutput.ReadToEnd
Dim b64 As String = Convert.ToBase64String(Encoding.Default.GetBytes(SelloTxt)) 'decodificamos el resultado en base 64
process3.WaitForExit() 'le decimos q se espere el proceso
System.IO.File.WriteAllText("C:\fepruebas\sello.txt", b64) 'escribimos el resultado en otro archivo de texto