Saltar al contenido

Funciones criptográficas en Jitterbit Studio

Las funciones criptográficas se utilizan para realizar cifrado y descifrado básico utilizando algoritmos y funciones estándar.

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) utilizando 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 las variables globales apropiadas. Luego, crearías una transformación que tome estas variables globales y las utilice en un mapeo 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 de un archivo, colocando el contenido en una variable, y luego usar la función Base64Encode sobre el contenido antes de guardarlo 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 requeridos

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

Parámetros opcionales

  • salt: Sal en forma de cadena hexadecimal utilizada para cifrar la cadena con la función AESEncryption
  • keyLength: Longitud de la clave utilizada para cifrar la cadena con la función AESEncryption
  • iterations: Número de iteraciones utilizadas para cifrar la cadena con la función AESEncryption

Descripción

Esta función descifra una cadena cifrada con el algoritmo AES de la función AESEncryption.

La salida descifrada se devuelve como una cadena. Consulta AESEncryption para obtener detalles adicionales.

Nota

Para descifrar texto cifrado con un algoritmo AES utilizando 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 posteriores.

Alternativamente, AESDecryptionEx admite el descifrado AES de OpenSSL 3 de forma predeterminada cuando se utilizan versiones de agente 11.42 o posteriores.

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 requeridos

  • encryptedText: Una cadena cifrada en AES, codificada en Base64 y compatible con OpenSSL 3
  • key: La clave utilizada para cifrar encryptedText

Parámetros opcionales

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

Descripción

Esta función descifra una cadena cifrada con un algoritmo AES utilizando OpenSSL 3. Esto incluye texto cifrado fuera de la plataforma Jitterbit Harmony y texto cifrado utilizando la función AESEncryptionEx. Esta función es compatible cuando se utilizan versiones de agente 11.42 o posteriores.

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

Ejemplos

// Cifrando (y descifrando) una cadena utilizando una clave de 128 bits y un IV de 16 bytes
encrypted = AESEncryptionEx("¡Hola mundo!", "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 que se va a encriptar
  • passphrase: Contraseña que se utilizará para encriptar la cadena

Parámetros opcionales

  • salt: Sal en formato hexadecimal utilizada para encriptar la cadena; si se especifica, el valor debe darse en formato hexadecimal (como "A034DD")
  • keyLength: Longitud de la clave que se utilizará para encriptar la cadena y debe ser uno 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 encripta una cadena utilizando un algoritmo AES que puede ser descifrado usando la función AESDecryption. La clave se genera de acuerdo con Password-Based Cryptography Specification Version 2.0 (PKCS5S2).

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

Nota

Para encriptar texto con un algoritmo AES utilizando 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 posteriores.

Alternativamente, AESEncryptionEx admite la encriptación AES de OpenSSL 3 por defecto cuando se utilizan versiones de agente 11.42 o posteriores.

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 que se va a encriptar
  • key: La clave que se utilizará para encriptar plainText

Parámetros opcionales

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

Descripción

Esta función encripta una cadena utilizando un algoritmo AES con OpenSSL 3. Esta función es compatible cuando se utilizan versiones de agente 11.42 o posteriores.

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

Ejemplos

// Encriptando (y desencriptando) una cadena utilizando una clave de 128 bits y un IV de 16 bytes
encrypted = AESEncryptionEx("¡Hola mundo!", "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, devolviendo datos binarios. Ver también Base64Encode.

Advertencia

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á terminada con = o ==. Al usar la versión del agente 11.34 o posterior, las cadenas codificadas en Base64 se manejan como se espera.

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 ya sea binaria. Si el tipo del argumento no es binario o una cadena, entonces el valor del argumento se convierte primero en una cadena antes de la encriptación.

Se agrega un carácter de nueva línea (\n) después de cada 64º carácter 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 explícitamente solo cuando sea necesario. Para deshabilitar esto, establece la variable Jitterbit jitterbit.base64.encoded.string.no.wrap en true antes de llamar a esta función. Esta variable es compatible con datos de cadena al usar agentes 10.49 y posteriores, y con datos binarios al usar agentes 10.x 10.66 y posteriores y agentes 11.x 11.4 y posteriores.

Ver 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 punto final 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 utilizado para sobrescribir el valor devuelto por la fuente sourceId

Descripción

Lee un archivo binario de la actividad de origen especificada y devuelve el 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, utiliza la función ReadFile en su lugar.

La fuente utilizada en esta función debe estar definida como una actividad asociada con un punto final de tipo archivo en el proyecto actual. Estos incluyen actividades configuradas de Compartición de Archivos, FTP, HTTP, Almacenamiento Local y Almacenamiento Temporal. Para más información, consulta las instrucciones sobre cómo insertar puntos finales en la sección de Puntos finales en Jitterbit Script.

Este método devuelve el contenido del archivo señalado por la fuente especificada. Si el filtro de la fuente selecciona más de un archivo, se utilizará el primero. Se recomienda especificar una fuente que identifique de manera única un solo archivo.

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

Si no se encuentra un archivo, se generará un error.

Se agrega un carácter de nueva línea (\n) después de cada 64º carácter de la cadena de resultado codificada. Dado que muchas implementaciones de Base64 incluyen nuevas líneas para limitar la longitud máxima de línea del resultado codificado, esto debe deshabilitarse explícitamente solo cuando sea necesario. Para deshabilitar esto, establezca la variable de Jitterbit jitterbit.base64.encoded.string.no.wrap en true antes de llamar a esta función. Esta variable es compatible con datos de cadena al usar agentes 10.49 y posteriores, y con datos binarios al usar agentes 10.x 10.66 y posteriores y agentes 11.x 11.4 y posteriores.

Véase 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 hasheado

Descripción

Aplica la función hash MD5 al argumento proporcionado. El hash se devuelve como una cadena de 64 bits de números hexadecimales. Los datos que no son cadenas se convertirán primero en una cadena.

Precaución

Cuando se utiliza con agentes de la 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 utilizando la variable de Jitterbit $jitterbit.md5.hash.use.file.mode.string.only.

Ejemplos

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

MD5AsTwoNumbers

Declaración

array MD5AsTwoNumbers(type arg)

Sintaxis

MD5AsTwoNumbers(<arg>)

Parámetros requeridos

  • arg: Valor a ser hasheado

Descripción

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

Ejemplos

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

SHA256

Declaración

string SHA256(type arg)

Sintaxis

SHA256(<arg>)

Parámetros requeridos

  • arg: Valor a ser hasheado

Descripción

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

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

Advertencia

Cuando se utiliza con agentes de la 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 puede aplicarse a versiones posteriores del agente utilizando la variable de Jitterbit $jitterbit.md5.hash.use.file.mode.string.only.

Ejemplos

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