Ir para o conteúdo

Funções Criptográficas no Jitterbit Design Studio

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

Ler e escrever arquivos usando Base-64

As funções Base64 podem ser usadas 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, em seguida, escrever o conteúdo desse arquivo em um endpoint, como o Salesforce.

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

// Read a PDF File
$docName = "Test.pdf";
$fileContents = Base64EncodeFile("<TAG>Sources/PDF 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 codificado em Base64
  • passphrase: Senha usada para criptografar a string com a função AESEncryption

Parâmetros opcionais

  • salt: Sal em string hexadecimal usado 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 usadas 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.

A saída descriptografada é retornada como uma string. Veja AESEncryption para detalhes adicionais.

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 do agente 11.42 ou posteriores.

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

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 em AES, suportada pelo OpenSSL 3 e codificada em Base64
  • 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 do Design Studio 11.42 ou posteriores e versões do agente 11.42 ou posteriores.

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

Exemplos

// Criptografando (e descriptografando) uma string usando uma chave de 128 bits e IV de 16 bytes
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 a ser usada para criptografar a string

Parâmetros opcionais

  • salt: Sal em formato hexadecimal usado para criptografar a string; se especificado, o valor deve ser fornecido em formato hexadecimal (como "A034DD")
  • keyLength: Comprimento da chave a ser usado para criptografar a string e deve ser um dos valores 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 que quando a string de texto simples foi criptografada.

Nota

Para criptografar texto 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 do agente 11.42 ou posteriores.

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

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 é gerado se o IV não tiver 16 bytes
  • keyLength: O comprimento da chave usado para criptografar plainText e deve ser um dos valores 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 do Design Studio 11.42 ou posteriores e versões do agente 11.42 ou posteriores.

A saída criptografada é uma string codificada em Base64 suportada pelo 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 que foram usados quando a string de texto simples foi criptografada.

Exemplos

// Criptografando (e descriptografando) uma string usando uma chave de 128 bits e IV de 16 bytes
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. Veja também Base64Encode.

Atenção

Ao usar a versão do agente 11.33 ou anterior, a função Base64Decode pode retornar um valor truncado ou incorreto quando a string codificada em Base64 não é finalizada com = ou ==. Ao usar a versão do agente 11.34 ou posterior, strings codificadas em Base64 são tratadas conforme o 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 uma string, o valor do argumento é primeiro convertido em uma string antes da criptografia.

Um caractere de nova linha (\n) é adicionado após cada 64º caractere da string de resultado codificada. Como muitas implementações de Base64 incluem novas linhas para limitar o comprimento máximo da linha do resultado codificado, isso deve ser explicitamente desativado apenas quando necessário. Para desativar isso, defina a variável Jitterbit jitterbit.base64.encoded.string.no.wrap como true antes de chamar esta função. Esta variável é suportada 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.

Veja 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: Uma string de origem no projeto atual que retorna um arquivo binário. Se um array de nomes de arquivos for retornado, o primeiro será utilizado.

Parâmetros opcionais

  • filename: Uma string de nome de arquivo usada para substituir o valor retornado pela origem sourceId

Descrição

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

A origem do tipo de arquivo usada nesta função deve ser definida como uma origem no projeto atual. Veja as instruções sobre inserir itens de projeto.

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

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

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

Um caractere de nova linha (\n) é adicionado após cada 64º caractere da string de resultado codificada. Como muitas implementações de Base64 incluem novas linhas para limitar o comprimento máximo da linha do resultado codificado, isso deve ser explicitamente desativado apenas quando necessário. Para desativar isso, defina a variável Jitterbit jitterbit.base64.encoded.string.no.wrap como true antes de chamar esta função. Esta variável é suportada 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.

Veja também Base64Decode.

Exemplos

// Reads the first file found at the source "Word Documents FTP"
// and returns it as Base64-encoded string
fileContents1 = Base64EncodeFile("<TAG>Sources/Word Documents FTP</TAG>");

// Reads the binary file called "requirements.doc" from
// the FTP directory defined by the source "Word Documents FTP"
fileContents2 = Base64EncodeFile("<TAG>Sources/Word Documents FTP</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 hashado

Descrição

Aplica a função 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 convertidos para uma string.

Atenção

Quando usado com agentes da versão 10.63 e anteriores ou 11.1 e anteriores, esta 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!");
// Retorna "fc3ff98e8c6a0d3087d515c0473f8677"

MD5AsTwoNumbers

Declaração

array MD5AsTwoNumbers(type arg)

Sintaxe

MD5AsTwoNumbers(<arg>)

Parâmetros obrigatórios

  • arg: Valor a ser hashado

Descrição

Aplica a função 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 convertidos para uma string.

Exemplos

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

SHA256

Declaração

string SHA256(type arg)

Sintaxe

SHA256(<arg>)

Parâmetros obrigatórios

  • arg: Valor a ser hashado

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, ela será primeiro convertida para a representação em bytes UTF-8. Dados que não são strings serão primeiro convertidos para uma string.

Atenção

Quando usado com agentes da versão 10.63 ou anterior ou 11.1 ou anterior, esta 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 hashado

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 Design Studio 11.65 ou posteriores e versões do agente 12.9 ou posteriores.

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

Exemplos

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