Funciones criptográficas en Jitterbit Integration Studio
Las funciones criptográficas se utilizan para realizar cifrado y descifrado básicos 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) usando el Base64EncodeFile
función y luego escribir el contenido de ese archivo en un extremo, como Salesforce.
Para ello, cree un secuencia de comandos que lea el archivo desde una fuente y configure las variables globales correspondientes. A continuación, cree una transformación que tome estas variables globales y las utilice 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 consiste en leer un archivo, colocar el contenido en una variable y luego usar la Base64Encode
Ejecute la función 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 AES con codificación Base64passphrase
: Contraseña utilizada para cifrar la cadena con elAESEncryption
función
Parámetros opcionales
salt
: Sal de cadena hexadecimal utilizada para cifrar la cadena con elAESEncryption
funciónkeyLength
: Longitud de la clave utilizada para cifrar la cadena con elAESEncryption
funcióniterations
: Número de iteraciones utilizadas para cifrar la cadena con elAESEncryption
función
Descripción
Esta función descifra una cadena cifrada con AESEncryption
Algoritmo AES de la función.
La salida descifrada se devuelve como una cadena. Véase AESEncryption
para más detalles.
Nota
Para descifrar texto cifrado con un algoritmo AES mediante OpenSSL 3, configure jitterbit.scripting.aes.default
a true
Esta variable es compatible con las versiones 11.42 y arriba en la cadena del agente.
Alternativamente, AESDecryptionEx
admite el descifrado AES de OpenSSL 3 de forma predeterminada al utilizar la versión 11.42 o posterior del agente.
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 con AES, codificada en Base64 y compatible con OpenSSL 3key
: La clave utilizada para cifrarencryptedText
Parámetros opcionales
iv
: El vector de inicialización (IV) de 16 bytes utilizado para cifrarencryptedText
-keyLength
: La longitud de la clave utilizada para cifrarencryptedText
Descripción
Esta función descifra una cadena cifrada con un algoritmo AES mediante OpenSSL 3. Esto incluye texto cifrado fuera de la plataforma Jitterbit Harmony y texto cifrado mediante el AESEncryptionEx
Función. Esta función es compatible con las versiones 11.42 y posteriores del agente.
La salida descifrada se devuelve como una cadena. Consulte 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 para cifrarpassphrase
: Contraseña que se utilizará para cifrar la cadena
Parámetros opcionales
salt
: Sal de cadena hexadecimal utilizada para cifrar la cadena; si se especifica, el valor debe proporcionarse en formato hexadecimal (como"A034DD"
)keyLength
: Longitud de clave que se utilizará para cifrar la cadena y debe ser 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 mediante un algoritmo AES que se puede descifrar con AESDecryption
. La clave se genera según la Especificación de criptografía basada en contraseñas, versión 2.0 (PKCS5S2).
La salida cifrada es una cadena codificada en Base64. La salida de AESEncryption
se puede pasar directamente a la AESDecryption
Función para descifrar, utilizando los mismos parámetros que al cifrar la cadena de texto sin formato.
Nota
Para cifrar texto con un algoritmo AES usando OpenSSL 3, configure jitterbit.scripting.aes.default
a true
Esta variable es compatible con las versiones 11.42 y arriba en la cadena del agente.
Alternativamente, AESEncryptionEx
admite el cifrado OpenSSL 3 AES 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);
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 cifrarkey
: La clave que se 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 bytes.keyLength
: La longitud de la clave utilizada para cifrarplainText
y debe ser uno de los siguientes: 128, 192 o 256; el valor predeterminado es 256.
Descripción
Esta función cifra una cadena mediante un algoritmo AES con OpenSSL 3. Esta función es compatible con las versiones 11.42 o posteriores del agente.
La salida cifrada es una cadena compatible con OpenSSL 3 y codificada en Base64. La salida de AESEncryptionEx
se puede pasar directamente a AESDecryptionEx
o fuera de la plataforma Jitterbit Harmony para el descifrado, utilizando los mismos parámetros que cuando se cifró la cadena de texto simple.
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. Véase también Base64Encode
.
Precaución
Al utilizar la versión 11.33 o anterior del agente, Base64Decode
la función puede devolver un valor truncado o incorrecto cuando la cadena codificada en Base64 no se adjunta con =
o ==
Al utilizar la versión 11.34 o posterior del agente, las cadenas codificadas en Base64 se procesan correctamente.
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 de una cadena como datos binarios, a menos que la entrada ya sea binaria. Si el tipo del argumento no es binario ni cadena, el valor del argumento se convierte primero a cadena antes del cifrado.
Un carácter de nueva línea (\n
) se añade después de cada 64 caracteres de la cadena de resultado codificada. Dado que muchas implementaciones de Base64 incluyen saltos de línea para limitar la longitud máxima de línea del resultado codificado, esto debe desactivarse explícitamente solo cuando sea necesario. Para desactivarlo, configure jitterbit.base64.encoded.string.no.wrap
Variable Jitterbit a true
Antes de llamar a esta función. Esta variable es compatible con datos de cadena al usar agentes de la versión 10.49 y posteriores, y con datos binarios al usar agentes de la versión 10.x (10.66 y posteriores) y de la versión 11.x (11.4 y posteriores).
Véase 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
Ruta de referencia de cadena a una actividad asociada a un extremo de tipo archivo en el proyecto actual que devuelve un archivo binario. Si se devuelve una matriz de nombres de archivo, se utiliza el primero.
Parámetros opcionales
filename
: Un nombre de archivo de cadena utilizado para anular el valor devuelto por elsourceId
fuente
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, utilice la función ReadFile
en cambio.
La fuente utilizada en esta función debe definirse como una actividad asociada a un extremo de tipo archivo en el proyecto actual. Estas incluyen actividades configuradas de recursos compartidos de archivos, FTP, HTTP, almacenamiento local y almacenamiento temporal. Para obtener más información, consulte las instrucciones sobre cómo insertar extremos en Extremos sección en Jitterbit Script.
Este método devuelve el contenido del archivo al que apunta la fuente especificada. Si el filtro de fuente selecciona más de un archivo, se utilizará el primero. Se recomienda especificar una fuente que identifique de forma única un solo 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 generará un error.
Un carácter de nueva línea (\n
) se añade después de cada 64 caracteres de la cadena de resultado codificada. Dado que muchas implementaciones de Base64 incluyen saltos de línea para limitar la longitud máxima de línea del resultado codificado, esto debe desactivarse explícitamente solo cuando sea necesario. Para desactivarlo, configure jitterbit.base64.encoded.string.no.wrap
Variable Jitterbit a true
Antes de llamar a esta función. Esta variable es compatible con datos de cadena al usar agentes de la versión 10.49 y posteriores, y con datos binarios al usar agentes de la versión 10.x (10.66 y posteriores) y de la versión 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 codificar
Descripción
Aplica la función hash MD5 al argumento proporcionado. El hash se devuelve como una cadena de 64 bits con números hexadecimales. Los datos que no sean cadenas se convertirán primero en una cadena.
Precaución
Al usar agentes de la versión 10.63 o anterior, o de la versión 11.1, esta función no genera los valores correctos para archivos binarios como ZIP o PDF. Este comportamiento se puede aplicar a versiones posteriores del agente mediante la variable 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 codificar
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 son cadenas se convierten primero en cadenas.
Ejemplos
MD5AsTwoNumbers("hello world!");
// Returns "{8612640914790536583, 3462540840444444668}"
SHA256
Declaración
string SHA256(type arg)
Sintaxis
SHA256(<arg>)
Parámetros requeridos
arg
: Valor a codificar
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 convierte a la representación de bytes UTF-8. Los datos que no sean cadenas se convierten primero a una cadena.
Precaución
Al usar agentes de la versión 10.63 o anterior, o de la versión 11.1, esta función no genera los valores correctos para archivos binarios como ZIP o PDF. Este comportamiento se puede aplicar a versiones posteriores del agente mediante la variable Jitterbit $jitterbit.md5.hash.use.file.mode.string.only
.
Ejemplos
SHA256("hello world!");
// Returns "7509e5bda0c762d2bac7f90d758b5b2263fa01ccbc542ab5e3df163be08e6ca9"