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 Base64passphrase: Contraseña utilizada para encriptar la cadena con la funciónAESEncryption
Parámetros opcionales
salt: Cadena salt hexadecimal utilizada para encriptar la cadena con la funciónAESEncryptionkeyLength: Longitud de clave utilizada para encriptar la cadena con la funciónAESEncryptioniterations: Número de iteraciones utilizadas para encriptar la cadena con la funciónAESEncryption
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 Base64key: La clave utilizada para encriptarencryptedText
Parámetros opcionales
iv: El vector de inicialización (IV) de 16 bytes utilizado para encriptarencryptedTextkeyLength: La longitud de clave utilizada para encriptarencryptedText
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 cifrarpassphrase: 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 256iterations: 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 cifrarkey: La clave a utilizar para cifrarplainText
Parámetros opcionales
iv: El vector de inicialización (IV) de 16 bytes utilizado para cifrarplainText; se genera un error si el IV no tiene 16 byteskeyLength: La longitud de clave utilizada para cifrarplainTexty 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 fuentesourceId
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"