Saltar al contenido

Funciones criptográficas en Jitterbit Studio

Las funciones criptográficas se utilizan para realizar encriptación y desencriptación básicas usando algoritmos y funciones estándar.

Para firmar una carga útil de solicitud de API con un secreto compartido usando HMAC-SHA256, consulta Generar una firma HMAC-SHA256.

Leer y escribir archivos usando Base64

Las funciones Base64 se pueden utilizar al leer y escribir archivos, siguiendo estos escenarios comunes:

Un escenario es leer un archivo existente (quizás un PDF) usando la función Base64EncodeFile, y luego escribir el contenido de ese archivo en un endpoint, como Salesforce.

Para hacer esto, crea un script que lea el archivo de una fuente y establezca variables globales apropiadas. Luego crearías una transformación que tome estas variables globales y las use en una asignación para escribir en 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";

Un segundo escenario es leer desde un archivo, colocando el contenido en una variable, y luego usar la función Base64Encode en el contenido antes de guardar en un nuevo archivo de texto.

AESDecryption

Declaración

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

Sintaxis

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

Parámetros obligatorios

  • encryptedText: Un valor AES encriptado codificado en Base64
  • passphrase: Contraseña utilizada para encriptar la cadena con la función AESEncryption

Parámetros opcionales

  • salt: Cadena salt hexadecimal utilizada para encriptar la cadena con la función AESEncryption
  • keyLength: Longitud de clave utilizada para encriptar la cadena con la función AESEncryption
  • iterations: Número de iteraciones utilizadas para encriptar la cadena con la función AESEncryption

Descripción

Esta función desencripta una cadena encriptada con el algoritmo AES de la función AESEncryption.

El resultado desencriptado se devuelve como una cadena. Consulta AESEncryption para obtener detalles adicionales.

Para solucionar problemas, consulta AESDecryption falla con datos encriptados bajo OpenSSL 3 en la guía de solución de problemas de operaciones.

Nota

Para desencriptar texto encriptado con un algoritmo AES usando OpenSSL 3, establece jitterbit.scripting.aes.default en true antes de esta función. Esta variable es compatible cuando se utilizan versiones de agente 11.42 o posterior.

Alternativamente, AESDecryptionEx admite desencriptación AES de OpenSSL 3 de forma predeterminada cuando se utilizan versiones de agente 11.42 o posterior.

Ejemplos

// 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

Declaración

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

Sintaxis

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

Parámetros obligatorios

  • encryptedText: Una cadena AES encriptada compatible con OpenSSL 3 y codificada en Base64
  • key: La clave utilizada para encriptar encryptedText

Parámetros opcionales

  • iv: El vector de inicialización (IV) de 16 bytes utilizado para encriptar encryptedText
  • keyLength: La longitud de clave utilizada para encriptar encryptedText

Descripción

Esta función desencripta una cadena encriptada con un algoritmo AES usando OpenSSL 3. Esto incluye texto encriptado fuera de la plataforma Jitterbit Harmony y texto encriptado usando la función AESEncryptionEx. Esta función es compatible cuando se utilizan versiones de agente 11.42 o posterior.

La salida descifrada se devuelve como una cadena. Consulta AESEncryptionEx para el cifrado.

Ejemplos

// 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

Declaración

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

Sintaxis

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

Parámetros requeridos

  • plainText: Una cadena a cifrar
  • passphrase: Contraseña a utilizar para cifrar la cadena

Parámetros opcionales

  • salt: Cadena de sal hexadecimal utilizada para cifrar la cadena; si se especifica, el valor debe proporcionarse en formato hexadecimal (como "A034DD")
  • keyLength: Longitud de clave a utilizar para cifrar la cadena y debe ser una de 128, 192 o 256; el valor predeterminado es 256
  • iterations: Número de iteraciones utilizadas para generar la clave; el valor predeterminado es 1

Descripción

Esta función cifra una cadena utilizando un algoritmo AES que se puede descifrar mediante la función AESDecryption. La clave se genera de acuerdo con la Especificación de Criptografía Basada en Contraseña Versión 2.0 (PKCS5S2).

La salida cifrada es una cadena codificada en Base64. La salida de AESEncryption se puede pasar directamente a la función AESDecryption para descifrado, utilizando los mismos parámetros que cuando se cifró la cadena de texto plano.

Nota

Para cifrar texto con un algoritmo AES mediante OpenSSL 3, establece jitterbit.scripting.aes.default en true antes de esta función. Esta variable se admite cuando se utilizan versiones de agente 11.42 o posterior.

Alternativamente, AESEncryptionEx admite el cifrado AES de OpenSSL 3 de forma predeterminada cuando se utilizan versiones de agente 11.42 o posterior.

Ejemplos

// 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

Declaración

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

Sintaxis

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

Parámetros requeridos

  • plainText: La cadena a cifrar
  • key: La clave a utilizar para cifrar plainText

Parámetros opcionales

  • iv: El vector de inicialización (IV) de 16 bytes utilizado para cifrar plainText; se genera un error si el IV no tiene 16 bytes
  • keyLength: La longitud de clave utilizada para cifrar plainText y debe ser una de 128, 192 o 256; el valor predeterminado es 256

Descripción

Esta función cifra una cadena utilizando un algoritmo AES con OpenSSL 3. Esta función se admite cuando se utilizan versiones de agente 11.42 o posterior.

La salida cifrada es una cadena compatible con OpenSSL 3 codificada en Base64. La salida de AESEncryptionEx se puede pasar directamente a la función AESDecryptionEx o fuera de la plataforma Jitterbit Harmony para descifrado, utilizando los mismos parámetros que cuando se cifró la cadena de texto plano.

Ejemplos

// 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

Declaración

binary Base64Decode(string encryptedText)

Sintaxis

Base64Decode(<encryptedText>)

Parámetros requeridos

  • encryptedText: Una cadena codificada en Base64

Descripción

Decodifica una cadena codificada en Base64 y devuelve datos binarios. Consulta también Base64Encode.

Precaución

Al usar la versión del agente 11.33 o anterior, la función Base64Decode puede devolver un valor truncado o incorrecto cuando la cadena codificada en Base64 no está anexada con = o ==. Al usar la versión del agente 11.34 o posterior, las cadenas codificadas en Base64 se manejan según lo previsto.

Ejemplos

// 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

Declaración

string Base64Encode(type arg)

Sintaxis

Base64Encode(<arg>)

Parámetros requeridos

  • arg: Valor a codificar

Descripción

Codifica los datos del argumento, tratando los caracteres en una cadena como datos binarios a menos que la entrada sea ya binaria. Si el tipo del argumento no es binario ni una cadena, se convierte primero el valor del argumento a una cadena antes de la codificación.

Se añade un carácter de nueva línea (\n) después de cada 64 caracteres de la cadena de resultado codificada. Como muchas implementaciones de Base64 incluyen nuevas líneas para limitar la longitud máxima de línea del resultado codificado, esto debe deshabilitarse solo según sea necesario. Para deshabilitar esto, establece la variable de Jitterbit jitterbit.base64.encoded.string.no.wrap en true antes de llamar a esta función. Esta variable se soporta con datos de cadena cuando se usan agentes 10.49 o posteriores, y con datos binarios cuando se usan agentes 10.x 10.66 o posteriores y agentes 11.x 11.4 o posteriores.

Consulta también Base64Decode.

Ejemplos

// 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

Declaración

string Base64EncodeFile(string sourceId[, string filename])

Sintaxis

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

Parámetros requeridos

  • sourceId: Una ruta de referencia de cadena a una actividad asociada con un endpoint de tipo archivo en el proyecto actual que devuelve un archivo binario. Si se devuelve un arreglo de nombres de archivo, se utiliza el primero.

Parámetros opcionales

  • filename: Un nombre de archivo de cadena usado para reemplazar el valor devuelto por la fuente sourceId

Descripción

Lee un archivo binario de la actividad de fuente especificada y devuelve su contenido como una cadena codificada en Base64. Este método se utiliza generalmente para archivos que podrían ser binarios. Para leer un archivo de texto, usa la función ReadFile en su lugar.

La fuente utilizada en esta función debe definirse como una actividad asociada a un endpoint de tipo archivo en el proyecto actual. Esto incluye actividades configuradas de File Share, FTP, HTTP, Local Storage y Temporary Storage. Para obtener más información, consulta las instrucciones sobre la inserción de endpoints en la sección Endpoints en Jitterbit Script.

Este método devuelve el contenido del archivo al que apunta la fuente especificada. Si el filtro de origen selecciona más de un archivo, se utilizará el primero. Se recomienda especificar una fuente que identifique de forma única un archivo.

El segundo parámetro, filename, es opcional y se puede usar para anular el nombre de archivo devuelto en la configuración de la actividad. Alternativamente, se puede usar una variable global para anular el nombre de archivo en la configuración de la actividad. Las variables globales se referencian como [de_name] en la configuración de la actividad.

Si no se encuentra un archivo, se genera un error.

Se añade un carácter de nueva línea (\n) después de cada carácter 64 del resultado codificado. Como muchas implementaciones de Base64 incluyen saltos de línea para limitar la longitud máxima de línea del resultado codificado, esto solo debe deshabilitarse según sea necesario. Para deshabilitarlo, establece la variable de Jitterbit jitterbit.base64.encoded.string.no.wrap en true antes de llamar esta función. Esta variable es compatible con datos de cadena cuando se usan agentes 10.49 y posteriores, y con datos binarios cuando se usan agentes 10.x 10.66 y posteriores, y agentes 11.x 11.4 y posteriores.

Consulta también Base64Decode.

Ejemplos

// 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

Declaración

string MD5(type arg)

Sintaxis

MD5(<arg>)

Parámetros requeridos

  • arg: Valor a ser procesado por hash

Descripción

Aplica la función hash MD5 al argumento proporcionado. El hash se devuelve como una cadena de 32 dígitos hexadecimales. Los datos que no sean cadena se convertirán primero a cadena.

Precaución

Cuando se usa con agentes versión 10.63 y anteriores o 11.1 y anteriores, esta función no genera los valores correctos para archivos binarios como ZIP o PDF. Este comportamiento se puede aplicar a versiones posteriores de agentes usando la variable de Jitterbit $jitterbit.md5.hash.use.file.mode.string.only.

Ejemplos

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

MD5AsTwoNumbers

Declaración

array MD5AsTwoNumbers(type arg)

Sintaxis

MD5AsTwoNumbers(<arg>)

Parámetros requeridos

  • arg: Valor a ser procesado por hash

Descripción

Aplica la función hash MD5 a una cadena de entrada y devuelve el resultado como una matriz con dos números de 64 bits. Los datos que no sean cadena se convertirán primero a cadena.

Ejemplos

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

SHA256

Declaración

string SHA256(type arg)

Sintaxis

SHA256(<arg>)

Parámetros requeridos

  • arg: Valor a ser procesado por hash

Descripción

Aplica la función hash SHA-256 a una cadena de entrada. El hash devuelto es una cadena de 64 dígitos hexadecimales.

Si la entrada es una cadena, se convertirá primero a la representación de bytes UTF-8. Los datos que no sean cadena se convertirán primero a cadena.

Precaución

Cuando se usa con agentes versión 10.63 y anteriores o 11.1 y anteriores, esta función no genera los valores correctos para archivos binarios como ZIP o PDF. Este comportamiento se puede aplicar a versiones posteriores de agentes usando la variable de Jitterbit $jitterbit.md5.hash.use.file.mode.string.only.

Ejemplos

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

SHA512

Declaración

string SHA512(type arg)

Sintaxis

SHA512(<arg>)

Parámetros requeridos

  • arg: Valor a ser codificado

Descripción

Aplica la función hash SHA-512 a una cadena de entrada. El hash devuelto es una cadena de 128 dígitos hexadecimales. Esta función se admite cuando se utilizan versiones de agente 12.9 o posteriores.

Si la entrada es una cadena, primero se convertirá a la representación de bytes UTF-8. Los datos que no sean cadena se convertirán primero a una cadena.

Ejemplos

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