Introdução
Recentemente tivemos um requisito em nossa organização para implementar criptografia na transmissão de dados do Fiori para o SAP com oData. O requisito era criptografar AES256 as informações compartilhadas entre os sistemas.
Classes/Funções do SAP e Bibliotecas JS utilizadas no processo:
-
Da biblioteca crypto-js, é utilizado o arquivo AES.js
para implementar a lógica de geração de chave AES e criptografia de informações.
-
É utilizado CL_SEC_SXML_WRITER para a descriptografia das informações.
-
É utilizado SCMS_STRING_TO_XSTRING para converter string em xstring.
-
/ui2/cl_abap2json é utilizado para converter xstring em string.
Importar biblioteca JS para seu projeto
Imagem1
-
Agora devemos importar a biblioteca Javascript aes.js em nosso controlador principal ou no controlador que deseja usar.
-
Adicione o seguinte comando no topo do seu controlador "jQuery.sap.require("seuDiretorioDoArquivoAESInserido")"
Imagem2
Gerar Chave de Criptografia e Criptografia (em JS do Fiori)
Usei a seguinte lógica para gerar a chave para a criptografia em JavaScript e enviá-la para o SAP através do serviço oData.
*IV: Em criptografia, um vetor de inicialização (IV) é uma entrada para um primitivo criptográfico que é usado para fornecer o estado inicial. O IV geralmente é aleatório. A aleatorização é crucial para alguns esquemas de criptografia para alcançar segurança semântica, uma propriedade pela qual o uso repetido do esquema com a mesma chave não permite a um atacante inferir relações entre segmentos (potencialmente semelhantes) da mensagem criptografada.
Nota: Use seu próprio IV criado aleatoriamente. E o comprimento da chave gerada aleatoriamente deve ser de 32 caracteres.
Criptografia:
let data = "ESTA É MINHA CHAVE SECRETA";
let iv = 'EsteÉNossoIVAleatório123456';
let key = 'ESTAÉNOSSACHAVE123456789ESTAÇÃO01';
let fkey = CryptoJS.enc.Utf8.parse(key);
let fiv = CryptoJS.enc.Utf8.parse(iv);