ENCRIPTAR con el algoritmo RSA-SHA256.

ENCRIPTAR con el algoritmo RSA-SHA256.

Postby RSalazarU » Sat Mar 11, 2023 12:51 pm

Saludos Amigos.

En Bolivia se esta implementando el sistema de facturacion en linea hace mas de dos años
El SIN (Sistema de Impuestos Nacionales) definio dos tipos de facturacion en linea: Con y Sin Firma digital

Ahora me toco el tema de la firma digital

El proceso de firmado del XML de la factura es:
1.Aplicar el algoritmo de canonicalización al documento XML, es decir realizar un procesamiento que permita obtener su forma canónica o se normalice el documento original.
2.Aplicara al resultado el algoritmo sha256 a objeto de obtener el HASH.
3.Obtener una cadena aplicando al anterior HASH el algoritmo Base64.
4.Adicionar las etiquetas de signature al XML.
5.Agregar a la etiqueta Digest Value el valor obtenido en el paso 4.
6.Tomar la sección de la firma y obtener un HASH del mismo aplicando el algoritmo SHA256.
7.Encriptar el HASH obtenido utilizando el algoritmo RSA SHA256 con la llave privada.
8.Aplicar a la cadena resultante el algoritmo Base64 para obtener una cadena.
9.Adicionar a la etiqueta de Signature Value la cadena anterior.
10.Finalmente colocar en la etiqueta X509 Certificate la llave publica.
11.Devolver el XML firmado.


Llegue al paso 7 donde al HASH de la firma la tengo que ENCRIPTAR con el algoritmo RSA-SHA256.

En xHarbour creo que solo se lo puede hacer hacer esto con OpenSSL
Ya tengo mi programa enlazado con: hbssl, libeay32, ssleay32 ,libssl, libcrypto

Alguien me puede dar una mano para hacer el proceso de encriptacion con RSA-SHA256.
- Como debo usar las funciones de OpenSSL
- Podria usar, tambien, OpenSSL.exe para hacer el proceso en forma externa con RunCMD()

De antemano, gracias por la respuesta

Atentamente
Rolando
Cochabamba, Bolivia
PD: trabajo con FWH, xHarbour, ADS
RSalazarU
 
Posts: 211
Joined: Wed Jul 16, 2008 12:59 pm
Location: Cochabamba-Bolivia

Re: ENCRIPTAR con el algoritmo RSA-SHA256.

Postby Antonio Linares » Sun Mar 12, 2023 5:31 pm

Estimado Rolando,

Tal vez esto pueda servirte:
viewtopic.php?p=255862&sid=f42e21596cf6b05a6962299d4b1975fd#p255862
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42069
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ENCRIPTAR con el algoritmo RSA-SHA256.

Postby RSalazarU » Mon Mar 13, 2023 2:33 pm

Antonio,

Gracias por responder, pero no es lo que necesito

Diferencia entre SA256 y RSA-SHA256
- RSA is a Public Key Cryptographic algorithm (Public and Private Key-Pair algorithm) and it assures Confidentiality, Authenticity (includes Identification) and Non-Repudiation.
- SHA-256 is a Hashing algorithm, that produce a unique, fixed size 256-bit (32-byte) hash and it assures Message Integrity.


Estoy trabajando para obtener lo requerido con OpenSSL.exe, en forma externa


Atentamente,
Rolando
RSalazarU
 
Posts: 211
Joined: Wed Jul 16, 2008 12:59 pm
Location: Cochabamba-Bolivia

Re: ENCRIPTAR con el algoritmo RSA-SHA256.

Postby karinha » Mon Mar 13, 2023 3:25 pm

Esto?

Code: Select all  Expand view

// Harbour proporciona la función HB_SHA256( cText ) --> nHash

#Include "FiveWin.ch"

FUNCTION Main()

   // Ejemplo:
   ? hb_CStr( hb_SHA256( 'Probando CheckSum de este Texto', nil ) )

RETURN NIL
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7795
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: ENCRIPTAR con el algoritmo RSA-SHA256.

Postby RSalazarU » Tue Mar 14, 2023 12:42 pm

Karinha,

Gracias por responder, pero no es lo que necesito.

Este codigo, solo saca el hash SHA256
Code: Select all  Expand view

// Harbour proporciona la función HB_SHA256( cText ) --> nHash

#Include "FiveWin.ch"

FUNCTION Main()

   // Ejemplo:
   ? hb_CStr( hb_SHA256( 'Probando CheckSum de este Texto', nil ) )

RETURN NIL
 

- El resultado es un string de 256 caracteres que sirve para verificar la INTEGRIDAD de cText
- cText puede ser de cualquier tamaño
- Los Hashes mas famosos son los MD5 que sirven para verificar la integridad de archivos regrandes ( imágenes ISO, etc)
- aparte de SHA256 hay otros como MD5


Lo que necesito es Encriptar el texto
Code: Select all  Expand view

#Include "FiveWin.ch"

FUNCTION Main()

   // Ejemplo:
   ? hb_Encrypt_RSA_SHA256( 'Probando Encriptar este Texto', cFilePrivateKey ) )

RETURN NIL
 

- hb_Encrypt_RSA_SHA256() es el nombre probable de la función
- cFilePrivateKey seria el dato que sirve para encriptar el texto
- El resultado seria un string binario de cualquier tamaño
- Una vez obtenido el string binario tengo que hacer HB_Encode64(cBinary) para incorporarlo al XML
- Por la fuerza que tiene el algoritmo RSA, se recomienda usarlo con archivos/textos pequeños
- existen otros algoritmo para encriptar..

Bueno, gracias de todos modos, seguiré buscando


Rolando
RSalazarU
 
Posts: 211
Joined: Wed Jul 16, 2008 12:59 pm
Location: Cochabamba-Bolivia



Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 31 guests