Ir para o conteúdo

Funções criptográficas no Jitterbit Studio

As funções criptográficas são utilizadas para realizar criptografia e descriptografia básicas usando algoritmos e funções padrão.

Para assinar um payload de solicitação de API com um segredo compartilhado usando HMAC-SHA256, consulte Gerar uma assinatura HMAC-SHA256.

Ler e escrever arquivos usando Base64

As funções Base64 podem ser utilizadas ao ler e escrever arquivos, seguindo estes cenários comuns:

Um cenário é ler um arquivo existente (talvez um PDF) usando a função Base64EncodeFile, e então escrever o conteúdo desse arquivo em um endpoint, como Salesforce.

Para fazer isso, crie um script que leia o arquivo de uma origem e defina variáveis globais apropriadas. Você criaria então uma transformação que utilize essas variáveis globais e as use em um mapeamento para escrever no Salesforce:

// Read a PDF File
$docName = "Test.pdf";
$fileContents = Base64EncodeFile("<TAG>activity:ftp/FTP Endpoint/ftp_read/FTP Files</TAG>", $docName);
$docLength = Length($fileContents);
$docType = "pdf";
$mimeType = "application/pdf";

Um segundo cenário é ler de um arquivo, colocando o conteúdo em uma variável, e então usar a função Base64Encode no conteúdo antes de salvar em um novo arquivo de texto.

AESDecryption

Declaração

string AESDecryption(string encryptedText, string passphrase[, string salt, int keyLength, int iterations])

Sintaxe

AESDecryption(<encryptedText>, <passphrase>[, <salt>, <keyLength>, <iterations>])

Parâmetros obrigatórios

  • encryptedText: Um valor AES criptografado e codificado em Base64
  • passphrase: Senha usada para criptografar a string com a função AESEncryption

Parâmetros opcionais

  • salt: String de sal hexadecimal usada para criptografar a string com a função AESEncryption
  • keyLength: Comprimento da chave usado para criptografar a string com a função AESEncryption
  • iterations: Número de iterações usado para criptografar a string com a função AESEncryption

Descrição

Esta função descriptografa uma string criptografada com o algoritmo AES da função AESEncryption.

O resultado descriptografado é retornado como uma string. Consulte AESEncryption para obter detalhes adicionais.

Para solução de problemas, consulte AESDecryption falha com dados criptografados sob OpenSSL 3 no guia de solução de problemas de operação.

Nota

Para descriptografar texto criptografado com um algoritmo AES usando OpenSSL 3, defina jitterbit.scripting.aes.default como true antes desta função. Esta variável é suportada ao usar versões de agente 11.42 ou posterior.

Alternativamente, AESDecryptionEx suporta descriptografia AES de OpenSSL 3 por padrão ao usar versões de agente 11.42 ou posterior.

Exemplos

// Encrypting a string
encrypted = AESEncryption("Hello world!", "password");
// Decrypted as "Hello world!"
decrypted = AESDecryption(encrypted, "password");

// Encrypting (and decrypting) a string using
// a passphrase and salt, 256-bit key, and 1024 iterations
encrypted = AESEncryption("Hello world!", "password", "00FFAE01", 256, 1024);
decrypted = AESDecryption(encrypted, "password", "00FFAE01", 256, 1024);

AESDecryptionEx

Declaração

string AESDecryptionEx(string encryptedText, string key[, string iv, int keyLength>])

Sintaxe

AESDecryptionEx(<encryptedText>, <key>[, <iv>, <keyLength>])

Parâmetros obrigatórios

  • encryptedText: Uma string criptografada AES codificada em Base64 e suportada por OpenSSL 3
  • key: A chave usada para criptografar encryptedText

Parâmetros opcionais

  • iv: O vetor de inicialização (IV) de 16 bytes usado para criptografar encryptedText
  • keyLength: O comprimento da chave usado para criptografar encryptedText

Descrição

Esta função descriptografa uma string criptografada com um algoritmo AES usando OpenSSL 3. Isso inclui texto criptografado fora da plataforma Jitterbit Harmony e texto criptografado usando a função AESEncryptionEx. Esta função é suportada ao usar versões de agente 11.42 ou posterior.

A saída descriptografada é retornada como uma string. Consulte AESEncryptionEx para criptografia.

Exemplos

// Encrypting (and decrypting) a string using a 128-bit key and 16-byte IV
encrypted = AESEncryptionEx("Hello world!", "123456ZYXWVUTSRQ", "12345XYZ12345XYZ", 128);
decrypted = AESDecryptionEx(encrypted, "123456ZYXWVUTSRQ", "12345XYZ12345XYZ", 128);

AESEncryption

Declaração

string AESEncryption(string plainText, string passphrase[, string salt, int keyLength, int iterations])

Sintaxe

AESEncryption(<plainText>, <passphrase>[, <salt>, <keyLength>, <iterations>])

Parâmetros obrigatórios

  • plainText: Uma string a ser criptografada
  • passphrase: Senha para usar na criptografia da string

Parâmetros opcionais

  • salt: Salt em string hexadecimal usado para criptografar a string; se especificado, o valor deve ser fornecido em formato hexadecimal (como "A034DD")
  • keyLength: Comprimento da chave para usar na criptografia da string e deve ser um de 128, 192 ou 256; o padrão é 256
  • iterations: Número de iterações usadas para gerar a chave; o padrão é 1

Descrição

Esta função criptografa uma string usando um algoritmo AES que pode ser descriptografado usando a função AESDecryption. A chave é gerada de acordo com a Especificação de Criptografia Baseada em Senha Versão 2.0 (PKCS5S2).

A saída criptografada é uma string codificada em Base64. A saída de AESEncryption pode ser passada diretamente para a função AESDecryption para descriptografia, usando os mesmos parâmetros de quando a string de texto simples foi criptografada.

Observação

Para criptografar texto com um algoritmo AES usando OpenSSL 3, defina jitterbit.scripting.aes.default como true a montante dessa função. Esta variável é suportada ao usar versões de agente 11.42 ou posterior.

Alternativamente, AESEncryptionEx suporta criptografia AES OpenSSL 3 por padrão ao usar versões de agente 11.42 ou posterior.

Exemplos

// Encrypting a string
encrypted = AESEncryption("Hello world!", "password");
// Decrypted as "Hello world!"
decrypted = AESDecryption(encrypted, "password");

// Encrypting (and decrypting) a string using
// a passphrase and salt, 256-bit key, and 1024 iterations
encrypted = AESEncryption("Hello world!", "password", "00FFAE01", 256, 1024);
decrypted = AESDecryption(encrypted, "password", "00FFAE01", 256, 1024);

AESEncryptionEx

Declaração

string AESEncryptionEx(string plainText, string key[, string iv, int keyLength])

Sintaxe

AESEncryptionEx(<plainText>, <key>[, <iv>, <keyLength>])

Parâmetros obrigatórios

  • plainText: A string a ser criptografada
  • key: A chave a ser usada para criptografar plainText

Parâmetros opcionais

  • iv: O vetor de inicialização (IV) de 16 bytes usado para criptografar plainText; um erro é lançado se o IV não tiver 16 bytes
  • keyLength: O comprimento da chave usado para criptografar plainText e deve ser um de 128, 192 ou 256; o padrão é 256

Descrição

Esta função criptografa uma string usando um algoritmo AES com OpenSSL 3. Esta função é suportada ao usar versões de agente 11.42 ou posterior.

A saída criptografada é uma string codificada em Base64 suportada por OpenSSL 3. A saída de AESEncryptionEx pode ser passada diretamente para a função AESDecryptionEx ou fora da plataforma Jitterbit Harmony para descriptografia, usando os mesmos parâmetros de quando a string de texto simples foi criptografada.

Exemplos

// Encrypting (and decrypting) a string using a 128-bit key and 16-byte IV
encrypted = AESEncryptionEx("Hello world!", "123456ZYXWVUTSRQ", "12345XYZ12345XYZ", 128);
decrypted = AESDecryptionEx(encrypted, "123456ZYXWVUTSRQ", "12345XYZ12345XYZ", 128);

Base64Decode

Declaração

binary Base64Decode(string encryptedText)

Sintaxe

Base64Decode(<encryptedText>)

Parâmetros obrigatórios

  • encryptedText: Uma string codificada em Base64

Descrição

Decodifica uma string codificada em Base64, retornando dados binários. Consulte também Base64Encode.

Cuidado

Ao usar a versão 11.33 do agente ou anterior, a função Base64Decode pode retornar um valor truncado ou incorreto quando a string codificada em Base64 não é precedida de = ou ==. Ao usar a versão 11.34 do agente ou posterior, strings codificadas em Base64 são tratadas conforme esperado.

Exemplos

// Encrypting a string after first converting it to binary
binary = HexToBinary(StringToHex("Hello world!"));
encrypted = Base64Encode(binary);

decrypted = Base64Decode(encrypted);
result = HexToString(BinaryToHex(decrypted));
// Returns original string "Hello world!"

Base64Encode

Declaração

string Base64Encode(type arg)

Sintaxe

Base64Encode(<arg>)

Parâmetros obrigatórios

  • arg: Valor a ser codificado

Descrição

Codifica os dados do argumento, tratando os caracteres em uma string como dados binários, a menos que a entrada já seja binária. Se o tipo do argumento não for binário ou string, o valor do argumento é primeiro convertido em string antes da criptografia.

Um caractere de nova linha (\n) é adicionado após cada 64º caractere da string de resultado codificado. Como muitas implementações de Base64 incluem novas linhas para limitar o comprimento máximo da linha do resultado codificado, isso deve ser desabilitado explicitamente apenas conforme necessário. Para desabilitar isso, defina a variável Jitterbit jitterbit.base64.encoded.string.no.wrap como true antes de chamar essa função. Essa variável é suportada com dados de string ao usar agentes 10.49 e posterior, e com dados binários ao usar agentes 10.x 10.66 e posterior e agentes 11.x 11.4 e posterior.

Consulte também Base64Decode.

Exemplos

// Encrypting a string after first converting it to binary
binary = HexToBinary(StringToHex("Hello world!"));
encrypted = Base64Encode(binary);

decrypted = Base64Decode(encrypted);
result = HexToString(BinaryToHex(decrypted));
// Returns original string "Hello world!"

encrypted = Base64Encode(Now());
decrypted = Base64Decode(encrypted);
result = HexToString(BinaryToHex(decrypted));
// Returns a date string such as "2017-12-14 01:25:31"

// Encrypting credentials for use in an HTTP header
Base64Encode("exampleuser"+":"+"examplepassword")

Base64EncodeFile

Declaração

string Base64EncodeFile(string sourceId[, string filename])

Sintaxe

Base64EncodeFile(<sourceId>[, <filename>])

Parâmetros obrigatórios

  • sourceId: Um caminho de referência string para uma atividade associada a um endpoint do tipo arquivo no projeto atual que retorna um arquivo binário. Se um array de nomes de arquivo for retornado, o primeiro será usado.

Parâmetros opcionais

  • filename: Um nome de arquivo string usado para substituir o valor retornado pela fonte sourceId

Descrição

Lê um arquivo binário da atividade de origem especificada e retorna o conteúdo como uma string codificada em Base64. Esse método é geralmente usado para arquivos que podem ser binários. Para ler um arquivo de texto, use a função ReadFile.

A origem usada nessa função deve ser definida como uma atividade associada a um endpoint do tipo arquivo no projeto atual. Isso inclui atividades de File Share, FTP, HTTP, Local Storage e Temporary Storage configuradas. Para mais informações, consulte as instruções sobre inserção de endpoints na seção Endpoints em Jitterbit Script.

Esse método retorna o conteúdo do arquivo apontado pela origem especificada. Se o filtro de origem selecionar mais de um arquivo, o primeiro será usado. Recomenda-se especificar uma origem que identifique exclusivamente um único arquivo.

O segundo parâmetro, filename, é opcional e pode ser usado para sobrescrever o nome do arquivo retornado na configuração da atividade. Alternativamente, uma variável global pode ser usada para sobrescrever o nome do arquivo na configuração da atividade. As variáveis globais são referenciadas como [de_name] na configuração da atividade.

Se um arquivo não for encontrado, um erro será acionado.

Um caractere de nova linha (\n) é adicionado após cada 64º caractere da string de resultado codificada. Como muitas implementações de Base64 incluem quebras de linha para limitar o comprimento máximo da linha do resultado codificado, isso deve ser desabilitado explicitamente apenas conforme necessário. Para desabilitar, configure a variável Jitterbit jitterbit.base64.encoded.string.no.wrap como true antes de chamar essa função. Essa variável é compatível com dados de string ao usar agentes 10.49 e posteriores, e com dados binários ao usar agentes 10.x 10.66 e posteriores e agentes 11.x 11.4 e posteriores.

Confira também Base64Decode.

Exemplos

// Reads the first file found at the source
// "FTP Files" and returns it as a Base64-encoded string
fileContents1 = Base64EncodeFile("<TAG>activity:ftp/FTP Endpoint/ftp_read/FTP Files</TAG>");

// Reads the binary file called
// "requirements.doc" from the FTP directory
// defined by the source "FTP Files"
fileContents2 = Base64EncodeFile("<TAG>activity:ftp/FTP Endpoint/ftp_read/FTP Files</TAG>", "requirements.doc");

// Decodes the file contents; they can now be
// re-written as a binary file to another target
fileContents2Decoded = Base64Decode(fileContents2);

MD5

Declaração

string MD5(type arg)

Sintaxe

MD5(<arg>)

Parâmetros obrigatórios

  • arg: Valor a ser hash

Descrição

Aplica a função de hash MD5 ao argumento fornecido. O hash é retornado como uma string de 32 dígitos hexadecimais. Dados que não são strings serão primeiro convertidos para uma string.

Cuidado

Quando usado com agentes versão 10.63 e anteriores ou 11.1 e anteriores, essa função não gera os valores corretos para arquivos binários como ZIP ou PDF. Esse comportamento pode ser aplicado a versões posteriores do agente usando a variável Jitterbit $jitterbit.md5.hash.use.file.mode.string.only.

Exemplos

MD5("hello world!");
// Returns "fc3ff98e8c6a0d3087d515c0473f8677"

MD5AsTwoNumbers

Declaração

array MD5AsTwoNumbers(type arg)

Sintaxe

MD5AsTwoNumbers(<arg>)

Parâmetros obrigatórios

  • arg: Valor a ser hash

Descrição

Aplica a função de hash MD5 a uma string de entrada e retorna o resultado como um array com dois números de 64 bits. Dados que não são strings serão primeiro convertidos para uma string.

Exemplos

MD5AsTwoNumbers("hello world!");
// Returns "{8612640914790536583, 3462540840444444668}"

SHA256

Declaração

string SHA256(type arg)

Sintaxe

SHA256(<arg>)

Parâmetros obrigatórios

  • arg: Valor a ser hash

Descrição

Aplica a função de hash SHA-256 a uma string de entrada. O hash retornado é uma string de 64 dígitos hexadecimais.

Se a entrada for uma string, será primeiro convertida para a representação de byte UTF-8. Dados que não são strings serão primeiro convertidos para uma string.

Cuidado

Quando usado com agentes versão 10.63 e anteriores ou 11.1 e anteriores, essa função não gera os valores corretos para arquivos binários como ZIP ou PDF. Esse comportamento pode ser aplicado a versões posteriores do agente usando a variável Jitterbit $jitterbit.md5.hash.use.file.mode.string.only.

Exemplos

SHA256("hello world!");
// Returns "7509e5bda0c762d2bac7f90d758b5b2263fa01ccbc542ab5e3df163be08e6ca9"

SHA512

Declaração

string SHA512(type arg)

Sintaxe

SHA512(<arg>)

Parâmetros obrigatórios

  • arg: Valor a ser transformado em hash

Descrição

Aplica a função de hash SHA-512 a uma string de entrada. O hash retornado é uma string de 128 dígitos hexadecimais. Esta função é suportada ao usar versões do agent 12.9 ou posterior.

Se a entrada for uma string, ela será convertida primeiro para a representação de bytes UTF-8. Dados não-string serão convertidos para string primeiro.

Exemplos

SHA512("hello world!");
// Returns "db9b1cd3262dee37756a09b9064973589847caa8e53d31a9d142ea2701b1b28abd97838bb9a27068ba305dc8d04a45a1fcf079de54d607666996b3cc54f6b67c"