Página 4 de 4

Re: Generacion de Sello Digital paso a paso

Publicado: Mar May 17, 2011 12:47 pm
por Dado
pohvak escribió:Disculpa, la encriptacion RSA en que paso la realizas??? :?
En el paso 6 es donde aplica el algoritmo RSA

Re: Generacion de Sello Digital paso a paso

Publicado: Sab Ago 06, 2011 2:35 pm
por chmbrs
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

Re: Generacion de Sello Digital paso a paso

Publicado: Sab Ago 06, 2011 5:17 pm
por Dado
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

Re: Generacion de Sello Digital paso a paso

Publicado: Sab Ago 06, 2011 6:23 pm
por chmbrs
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

Re: Generacion de Sello Digital paso a paso

Publicado: Dom Ago 07, 2011 10:34 am
por chmbrs
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