Funções criptográficas no Jitterbit 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 Base64
As funções Base64 podem ser usadas ao ler e escrever arquivos, seguindo esses 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 utiliza 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 sobre o 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 criptografado em AES codificado em Base64passphrase: Senha usada para criptografar a string com a funçãoAESEncryption
Parâmetros opcionais
salt: Sal em string hexadecimal usado para criptografar a string com a funçãoAESEncryptionkeyLength: Comprimento da chave usado para criptografar a string com a funçãoAESEncryptioniterations: Número de iterações usadas para criptografar a string com a funçãoAESEncryption
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 Base64key: A chave usada para criptografarencryptedText
Parâmetros opcionais
iv: O vetor de inicialização (IV) de 16 bytes usado para criptografarencryptedTextkeyLength: O comprimento da chave usado para criptografarencryptedText
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 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 criptografadapassphrase: 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 é 256iterations: 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 foram usados quando a string em 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 criptografia AES 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 criptografadakey: A chave a ser usada para criptografarplainText
Parâmetros opcionais
iv: O vetor de inicialização (IV) de 16 bytes usado para criptografarplainText; um erro é gerado se o IV não tiver 16 byteskeyLength: O comprimento da chave usado para criptografarplainTexte 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 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 decriptação, usando os mesmos parâmetros que foram usados quando a string de texto simples foi criptografada.
Exemplos
// Criptografando (e decriptografando) 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, as 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: Um caminho de referência de 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 arquivos for retornado, o primeiro será utilizado.
Parâmetros opcionais
filename: Um nome de arquivo em string usado para substituir o valor retornado pela fontesourceId
Descrição
Lê um arquivo binário da atividade de origem especificada e retorna o conteúdo como uma string codificada em Base64. Este método é geralmente utilizado para arquivos que podem ser binários. Para ler um arquivo de texto, utilize a função ReadFile em vez disso.
A fonte utilizada nesta função deve ser definida como uma atividade associada a um endpoint do tipo arquivo no projeto atual. Isso inclui atividades configuradas de Compartilhamento de Arquivos, FTP, HTTP, Armazenamento Local e Armazenamento Temporário. Para mais informações, consulte as instruções sobre como inserir endpoints na seção Endpoints em Jitterbit Script.
Este método retorna o conteúdo do arquivo apontado pela fonte especificada. Se o filtro da fonte selecionar mais de um arquivo, o primeiro será utilizado. É recomendado especificar uma fonte que identifique de forma única um único arquivo.
O segundo parâmetro, filename, é opcional e pode ser usado para substituir o nome do arquivo retornado na configuração da atividade. Alternativamente, uma variável global pode ser utilizada para substituir o nome do arquivo na configuração da atividade. Variáveis globais são referenciadas como [de_name] na configuração da atividade.
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 codificado. 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
// "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 hashado
Descrição
Aplica a função hash MD5 ao argumento fornecido. O hash é retornado como uma string de 64 bits de números hexadecimais. Dados que não são strings serão primeiro convertidos em uma string.
Cuidado
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 de agentes 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 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 em 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 números 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 em 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
SHA256("hello world!");
// Retorna "7509e5bda0c762d2bac7f90d758b5b2263fa01ccbc542ab5e3df163be08e6ca9"