Generacion de Sello Digital paso a paso

Es tan comun este tema que he decidido abrir un foro especial para este caso. Se trata de programadores que tienen problemas para crear el Sello Digital y que no pasan la validacion
Avatar de Usuario
Dado
Mensajes: 15824
Registrado: Mar Jul 06, 2010 8:56 pm

Re: Generacion de Sello Digital paso a paso

Mensajepor Dado » Mar May 17, 2011 1:47 pm

pohvak escribió:Disculpa, la encriptacion RSA en que paso la realizas??? :?


En el paso 6 es donde aplica el algoritmo RSA
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

chmbrs
Mensajes: 3
Registrado: Sab Ago 06, 2011 12:31 pm

Re: Generacion de Sello Digital paso a paso

Mensajepor chmbrs » Sab Ago 06, 2011 3:35 pm

Hola que tal, yo estoy teniendo problemas debido a que no me estan dando los resultados esperados hasta donde se codifica en SHA1 todo perfecto, la cadena me sale bien pero cuando firmo la cadena ya los resultados son diferentes y no logro explicarme por que :? les anexo mi codigo y resultados obtenidos, espero y puedan ayudarme

Codigo PHP para la generacion y firmado

Código: Seleccionar todo

<?
//Genera el PEM del archivo key
exec('openssl pkcs8 -inform DER -in aaa010101aaa_CSD_01.key -passin pass:a0123456789 -out pruebaFactura/aaa010101aaa_CSD_01.key.pem');
//pasamos el archivo PEM
$key='pruebaFactura/aaa010101aaa_csd_01.key.pem';

$cadenaOriginal='||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||';
$cadena=utf8_encode($cadenaOriginal);
echo '<h5>UTF8</h5>'.$cadena;
$cadena=sha1($cadenaOriginal);
echo '<h5>SHA1</h5>'.$cadena;

$fp=fopen('sha1.txt','w+');
    fwrite($fp,$cadena);
    fclose($fp);
   

exec("openssl dgst -sha1 -sign LLAVEPRIVADA.pem.txt -out selloBin.txt sha1.txt");
exec("openssl enc -base64 -in selloBin.txt -out sello.txt");

echo "<h5>Seal</h5>";
readfile("sello.txt");
?>



Código: Seleccionar todo

Resultados
SHA1
ae8ccf6ae672b81c9a1f33557f87a6d2ddec02d4

Sello
ZlyWMKBnOveEZKCLxZQAHmzaO/eShsQ2U5UUiEx8F23VqXBnmENpepPkE4f9TOLC b+oX/Y1vMt/Y72kJJxYgoCs6rQlGEbASm6m5I8US1/rpNXiaxXypM6u0rtqcSGlI 1fU+2eJPredt7eyQppIryYMH5wYUEy2rZF09L2FdvTM=


y a la hora de validar me sigue dando sello del emisor invalido en el ValidaCFD, espero me puedan ayudar

Avatar de Usuario
Dado
Mensajes: 15824
Registrado: Mar Jul 06, 2010 8:56 pm

Re: Generacion de Sello Digital paso a paso

Mensajepor Dado » Sab Ago 06, 2011 6:17 pm

chmbrs escribió:Hola que tal, yo estoy teniendo problemas debido a que no me estan dando los resultados esperados hasta donde se codifica en SHA1 todo perfecto, la cadena me sale bien pero cuando firmo la cadena ya los resultados son diferentes y no logro explicarme por que :? les anexo mi codigo y resultados obtenidos, espero y puedan ayudarme


Estas aplicando dos veces el SHA1.

Elimina la siguiente linea:

Código: Seleccionar todo


$cadena=sha1($cadenaOriginal);  <<<elimina esta linea
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

chmbrs
Mensajes: 3
Registrado: Sab Ago 06, 2011 12:31 pm

Re: Generacion de Sello Digital paso a paso

Mensajepor chmbrs » Sab Ago 06, 2011 7:23 pm

Gracias por tu respuesta DADO, ya la elimine pero sigue sin darme el sello que dices que debe de salir, si pongo la cadena sin codificarla a utf8 me sale lo siguiente

Código: Seleccionar todo

dk4lchDiNo5NZnN7Ld31w0jLdSFV08aUFSTY+9PhnLi2jFQnOkJdpO9JobIFGIUS S+wJUO/oEVNQh2VYD2kbP/B3P0CYpkY/hNAlBZH68dxuNMpqfRiDLjVzIcvMR9WY 4RXEkW/EEJkQMHDbjjft5Prq2RMIyTz8NrdmzuYeeQs=

y si la codifico a utf8 me sale

Código: Seleccionar todo

SKlUSsicX1SOEd4KBGrEtVKg1dr4AsdWLVqrySfCTxx5c6D0CInShWXSsyUpaoj6
gZGpRuc9d9Cg0pQfJPKamSdOyljhNJIzo6VZqC/zg28QCG+6bY2sEmalS1MTP73R
gTIOXOUpio1GPQVO8l6RU+QVgY0TYSfp71JGFbDnWrM=

vuelvo a ponerte mi codigo php

Código: Seleccionar todo

//Genera el PEM del archivo key
exec('openssl pkcs8 -inform DER -in aaa010101aaa_CSD_01.key -passin pass:a0123456789 -out pruebaFactura/aaa010101aaa_CSD_01.key.pem');
//pasamos el archivo PEM
$key='pruebaFactura/aaa010101aaa_csd_01.key.pem';

$cadenaOriginal='||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||';
$cadena=utf8_encode($cadenaOriginal);
echo '<h5>UTF8</h5>'.$cadena;
//$cadena=sha1($cadenaOriginal);
//echo '<h5>SHA1</h5>'.$cadena;

$fp=fopen('cadena.txt','w+');
    fwrite($fp,$cadenaOriginal);
    fclose($fp);
   
exec("openssl dgst -sha1 -sign LLAVEPRIVADA.pem.txt -out selloBin.txt cadena.txt");
exec("openssl enc -base64 -in selloBin.txt -out sello.txt");

echo "<h5>Seal</h5>";
readfile("sello.txt");


gracias por tu apoyo

chmbrs
Mensajes: 3
Registrado: Sab Ago 06, 2011 12:31 pm

Re: Generacion de Sello Digital paso a paso

Mensajepor chmbrs » Dom Ago 07, 2011 11:34 am

ya logre resolverlo, muchas gracias por tu ayuda, lo que pasa es que la cadena que tu tienes de ejemplo de sello es de con digestion md5, gracias por este foro, ayuda mucho con lo complicado que es entender a la perfeccion el proceso, a pesar de su facil implementación, felicitaciones


Volver a “SELLO DIGITAL INVALIDO”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados