Avalados por :

Implementación de Cifrado y Descifrado en SAP utilizando AES256 y Base64

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 24 Vistas
0
Cargando...

Introducción


Recientemente tuvimos un requisito en nuestra organización para implementar cifrado para toda la transmisión de datos que ocurre desde SAP hacia sistemas externos para tener una capa adicional de seguridad. El requisito era cifrar con AES256 y codificar en Base64 la información compartida entre los sistemas. El cifrado/descifrado se realizó con una clave común que se generaba en SAP y se compartía a través de un correo electrónico automatizado desde el sistema.

Clases/Módulos de Función SAP utilizados para el proceso:



  • CL_SEC_SXML_WRITER se utiliza para implementar la lógica de generación de clave AES y cifrado/descifrado de la información.

  • Se está utilizando la FM SCMS_BASE64_<EN/DE>CODE_STR para codificar/decodificar en Base64 la información.


Flujo de Proceso de Alto Nivel


A continuación se muestran los pasos y el código de ejemplo que hemos utilizado para cifrado/descifrado.


Generar Clave de Cifrado


Utilizamos la siguiente lógica para generar la clave de cifrado que se almacena en una tabla y luego se comparte con sistemas externos.
*Código de Ejemplo para generar la Clave:
data: random          type xstring, wa_bench_config type   zhr_bench_config.
  call method cl_sec_sxml_writer=>generate_key
      exporting
        algorithm = cl_sec_sxml_writer=>co_aes256_algorithm
      receiving
        key       = random.
    data(lr_conv_key) = cl_abap_conv_out_ce=>create( ).

    lr_conv_key->write( data = random ).
    e_key = lr_conv_key->get_buffer( ).


Descifrado


El Sistema Externo envía datos cifrados con AES y codificados en Base64 y en SAP utilizamos la siguiente lógica para descifrar el texto.
 data:  i_key_xstring type xstring, i_iv type xstring.
i_iv = '00000000000000000000000000000000'.
 if i_text is not initial.
      call function 'SCMS_BASE64_DECODE_STR'
        exporting
          input  = i_text
*         UNESCAPE       = 'X'
        importing
          output = i_xstring
*       EXCEPTIONS
*         FAILED = 1
*         OTHERS = 2
        .
      if sy-subrc <> 0
            
            
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

Sin respuestas

No hay respuestas para mostrar No hay respuestas para mostrar Se el primero en responder

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?