Funções criptográficas no Jitterbit Design Studio
Funções criptográficas são usadas para executar 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 gravar arquivos, seguindo estes cenários comuns:
Um cenário é ler um arquivo existente (talvez um PDF) usando o Base64EncodeFile
função e, em seguida, gravar 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 as variáveis globais apropriadas. Em seguida, você criaria uma transformação que pega essas variáveis globais e as usa em um mapeamento para gravar 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, colocar o conteúdo em uma variável e, em seguida, usar o Base64Encode
função 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 criptografado AES em Base64passphrase
: Senha usada para criptografar a string com oAESEncryption
função
Parâmetros opcionais
salt
: Sal de string hexadecimal usado para criptografar a string com oAESEncryption
funçãokeyLength
: Comprimento da chave usada para criptografar a string com oAESEncryption
funçãoiterations
: Número de iterações usadas para criptografar a string com oAESEncryption
função
Descrição
Esta função descriptografa uma string criptografada com AESEncryption
Algoritmo AES da função.
A saída descriptografada é retornada como uma string. Veja AESEncryption
para mais detalhes.
Nota
Para descriptografar texto criptografado com um algoritmo AES usando OpenSSL 3, defina jitterbit.scripting.aes.default
para true
acima na cadeia desta função. Esta variável é suportada ao usar versões de agente 11.42 ou posteriores.
Alternativamente, AESDecryptionEx
suporta descriptografia OpenSSL 3 AES por padrão ao utilizar agentes com versões 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, codificada em Base64 e com suporte a OpenSSL 3key
: A chave usada para criptografarencryptedText
Parâmetros opcionais
iv
: O vetor de inicialização de 16 bytes (IV) usado para criptografarencryptedText
keyLength
: O comprimento da chave usada 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 o AESEncryptionEx
função. Esta função é compatível com o Design Studio versão 11.42 ou posterior e com o Agent versão 11.42 ou posterior.
A saída descriptografada é retornada como uma string. Veja 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 criptografadapassphrase
: Senha a ser usada para criptografar a string
Parâmetros opcionais
salt
: Sal de string hexadecimal usado para criptografar a string; se especificado, o valor deve ser fornecido em formato hexadecimal (como"A034DD"
)keyLength
: Comprimento da chave a ser usada para criptografar a string e deve ser 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 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 passado diretamente para o AESDecryption
função para descriptografia, usando os mesmos parâmetros usados quando a string de texto simples foi criptografada.
Nota
Para criptografar texto com um algoritmo AES usando OpenSSL 3, defina jitterbit.scripting.aes.default
para true
acima na cadeia desta função. Esta variável é suportada ao usar versões de agente 11.42 ou posteriores.
Alternativamente, AESEncryptionEx
oferece suporte à criptografia OpenSSL 3 AES por padrão ao usar versões de 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 de 16 bytes (IV) usado para criptografarplainText
; um erro é gerado se o IV não tiver 16 byteskeyLength
: O comprimento da chave usada para criptografarplainText
e deve ser 128, 192 ou 256; o padrão é 256.
Descrição
Esta função criptografa uma string usando um algoritmo AES usando OpenSSL 3. Esta função é suportada ao usar o Design Studio versões 11.42 ou posteriores e versões de agente 11.42 ou posteriores.
A saída criptografada é uma string codificada em Base64 e suportada por OpenSSL 3. A saída de AESEncryptionEx
pode ser passado diretamente para o AESDecryptionEx
função ou fora da plataforma Jitterbit Harmony para descriptografia, usando os mesmos parâmetros de quando a sequência 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. Veja também Base64Encode
.
Cuidado
Ao usar o agente versão 11.33 ou anterior, o Base64Decode
a função pode retornar um valor truncado ou incorreto quando a string codificada em Base64 não é anexada com =
ou ==
Ao utilizar o agente versão 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 será primeiro convertido para 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 quebras de linha para limitar o comprimento máximo de linha do resultado codificado, isso deve ser explicitamente desabilitado somente quando necessário. Para desabilitar isso, defina a propriedade jitterbit.base64.encoded.string.no.wrap
Variável Jitterbit para 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 uma matriz de nomes de arquivos for retornada, o primeiro nome será usado.
Parâmetros opcionais
filename
: Um nome de arquivo de string usado para substituir o valor retornado pelosourceId
fonte
Descrição
Lê um arquivo binário da fonte 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.
O tipo de arquivo source usado nesta função deve ser definido como source no projeto atual. Consulte as instruções em inserir itens do projeto.
Este método retorna o conteúdo do arquivo apontado pela fonte especificada. Se o filtro de fonte selecionar mais de um arquivo, o primeiro será usado. Recomenda-se especificar uma fonte 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 de origem. Alternativamente, uma variável global pode ser usada para substituir o nome do arquivo na definição de origem. Variáveis globais são referenciadas como [de_name]
na definição de 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 quebras de linha para limitar o comprimento máximo de linha do resultado codificado, isso deve ser explicitamente desabilitado somente quando necessário. Para desabilitar isso, defina a propriedade jitterbit.base64.encoded.string.no.wrap
Variável Jitterbit para 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 hash
Descrição
Aplica a função de hash MD5 ao argumento fornecido. O hash é retornado como uma string de 64 bits de números hexadecimais. Dados que não sejam strings serão primeiro convertidos para uma string.
Cuidado
Quando usada 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. Este 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 uma matriz com dois números de 64 bits. Dados que não sejam 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 números hexadecimais.
Se a entrada for uma string, ela será primeiro convertida para a representação de bytes UTF-8. Dados que não sejam strings serão primeiro convertidos para uma string.
Cuidado
Quando usada 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. Este 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"