Zum Inhalt springen

Kryptografische Funktionen in Jitterbit Studio

Kryptografische Funktionen werden verwendet, um grundlegende Verschlüsselung und Entschlüsselung mit standardmäßigen Algorithmen und Funktionen durchzuführen.

Dateien mit Base64 lesen und schreiben

Die Base64-Funktionen können beim Lesen und Schreiben von Dateien in folgenden gängigen Szenarien verwendet werden:

Ein Szenario besteht darin, eine vorhandene Datei (vielleicht ein PDF) mit der Funktion Base64EncodeFile zu lesen und dann den Inhalt dieser Datei an einen Endpunkt, wie Salesforce, zu schreiben.

Um dies zu tun, erstellen Sie ein Skript, das die Datei aus einer Quelle liest und geeignete globale Variablen festlegt. Sie würden dann eine Transformation erstellen, die diese globalen Variablen verwendet und in einer Zuordnung verwendet, um nach Salesforce zu schreiben:

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

Ein zweites Szenario besteht darin, aus einer Datei zu lesen, den Inhalt in eine Variable zu platzieren und dann die Funktion Base64Encode auf den Inhalt anzuwenden, bevor Sie ihn in einer neuen Textdatei speichern.

AESDecryption

Deklaration

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

Syntax

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

Erforderliche Parameter

  • encryptedText: Ein Base64-kodierter, mit AES verschlüsselter Wert
  • passphrase: Passwort, das verwendet wird, um den String mit der Funktion AESEncryption zu verschlüsseln

Optionale Parameter

  • salt: Hex-String-Salz, das verwendet wird, um den String mit der Funktion AESEncryption zu verschlüsseln
  • keyLength: Schlüssellänge, die verwendet wird, um den String mit der Funktion AESEncryption zu verschlüsseln
  • iterations: Anzahl der Iterationen, die verwendet werden, um den String mit der Funktion AESEncryption zu verschlüsseln

Beschreibung

Diese Funktion entschlüsselt einen mit dem AES-Algorithmus der Funktion AESEncryption verschlüsselten String.

Der entschlüsselte Output wird als String zurückgegeben. Siehe AESEncryption für weitere Details.

Hinweis

Um Text, der mit einem AES-Algorithmus unter Verwendung von OpenSSL 3 verschlüsselt wurde, zu entschlüsseln, setzen Sie jitterbit.scripting.aes.default auf true vor dieser Funktion. Diese Variable wird unterstützt, wenn Agent-Versionen 11.42 oder höher verwendet werden.

Alternativ unterstützt AESDecryptionEx standardmäßig die AES-Entschlüsselung mit OpenSSL 3, wenn Agent-Versionen 11.42 oder höher verwendet werden.

Beispiele

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

Deklaration

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

Syntax

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

Erforderliche Parameter

  • encryptedText: Ein Base64-kodierter, von OpenSSL 3 unterstützter AES-verschlüsselter String
  • key: Der Schlüssel, der verwendet wird, um encryptedText zu verschlüsseln

Optionale Parameter

  • iv: Der 16-Byte-Initialisierungsvektor (IV), der verwendet wird, um encryptedText zu verschlüsseln
  • keyLength: Die Schlüssellänge, die verwendet wird, um encryptedText zu verschlüsseln

Beschreibung

Diese Funktion entschlüsselt einen mit einem AES-Algorithmus unter Verwendung von OpenSSL 3 verschlüsselten String. Dies umfasst Texte, die außerhalb der Jitterbit Harmony-Plattform verschlüsselt wurden, sowie Texte, die mit der Funktion AESEncryptionEx verschlüsselt wurden. Diese Funktion wird unterstützt, wenn Agent-Versionen 11.42 oder höher verwendet werden.

Der entschlüsselte Output wird als String zurückgegeben. Siehe AESEncryptionEx für die Verschlüsselung.

Beispiele

// Verschlüsseln (und entschlüsseln) eines Strings mit einem 128-Bit-Schlüssel und 16-Byte-IV
encrypted = AESEncryptionEx("Hallo Welt!", "123456ZYXWVUTSRQ", "12345XYZ12345XYZ", 128);
decrypted = AESDecryptionEx(encrypted, "123456ZYXWVUTSRQ", "12345XYZ12345XYZ", 128);

AESEncryption

Deklaration

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

Syntax

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

Erforderliche Parameter

  • plainText: Ein zu verschlüsselnder String
  • passphrase: Passwort, das zur Verschlüsselung des Strings verwendet wird

Optionale Parameter

  • salt: Hex-String-Salz, das zur Verschlüsselung des Strings verwendet wird; wenn angegeben, muss der Wert im Hex-Format angegeben werden (z. B. "A034DD")
  • keyLength: Schlüssellänge, die zur Verschlüsselung des Strings verwendet werden soll und eine der Werte 128, 192 oder 256 sein muss; der Standardwert ist 256
  • iterations: Anzahl der Iterationen, die zur Generierung des Schlüssels verwendet werden; der Standardwert ist 1

Beschreibung

Diese Funktion verschlüsselt einen String mit einem AES-Algorithmus, der mit der Funktion AESDecryption entschlüsselt werden kann. Der Schlüssel wird gemäß der Password-Based Cryptography Specification Version 2.0 (PKCS5S2) generiert.

Die verschlüsselte Ausgabe ist ein Base64-kodierter String. Die Ausgabe von AESEncryption kann direkt an die Funktion AESDecryption zur Entschlüsselung übergeben werden, wobei die gleichen Parameter wie bei der Verschlüsselung des Klartext-Strings verwendet werden.

Hinweis

Um Text mit einem AES-Algorithmus unter Verwendung von OpenSSL 3 zu verschlüsseln, setzen Sie jitterbit.scripting.aes.default auf true vor dieser Funktion. Diese Variable wird unterstützt, wenn Agent-Versionen 11.42 oder höher verwendet werden.

Alternativ unterstützt AESEncryptionEx standardmäßig die AES-Verschlüsselung mit OpenSSL 3, wenn Agent-Versionen 11.42 oder höher verwendet werden.

Beispiele

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

Deklaration

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

Syntax

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

Erforderliche Parameter

  • plainText: Der zu verschlüsselnde String
  • key: Der Schlüssel, der zur Verschlüsselung von plainText verwendet wird

Optionale Parameter

  • iv: Der 16-Byte-Initialisierungsvektor (IV), der zur Verschlüsselung von plainText verwendet wird; ein Fehler wird ausgelöst, wenn der IV nicht 16 Bytes beträgt
  • keyLength: Die Schlüssellänge, die zur Verschlüsselung von plainText verwendet wird und einer der Werte 128, 192 oder 256 sein muss; der Standardwert ist 256

Beschreibung

Diese Funktion verschlüsselt einen String mit einem AES-Algorithmus unter Verwendung von OpenSSL 3. Diese Funktion wird unterstützt, wenn Agent-Versionen 11.42 oder höher verwendet werden.

Die verschlüsselte Ausgabe ist ein von OpenSSL 3 unterstützter, Base64-kodierter String. Die Ausgabe von AESEncryptionEx kann direkt an die AESDecryptionEx Funktion oder außerhalb der Jitterbit Harmony-Plattform zur Entschlüsselung übergeben werden, wobei dieselben Parameter wie bei der Verschlüsselung des Klartext-Strings verwendet werden.

Beispiele

// Verschlüsselung (und Entschlüsselung) eines Strings mit einem 128-Bit-Schlüssel und 16-Byte-IV
encrypted = AESEncryptionEx("Hallo Welt!", "123456ZYXWVUTSRQ", "12345XYZ12345XYZ", 128);
decrypted = AESDecryptionEx(encrypted, "123456ZYXWVUTSRQ", "12345XYZ12345XYZ", 128);

Base64Decode

Deklaration

binary Base64Decode(string encryptedText)

Syntax

Base64Decode(<verschlüsselterText>)

Erforderliche Parameter

  • verschlüsselterText: Ein Base64-kodierter String

Beschreibung

Dekodiert einen Base64-kodierten String und gibt binäre Daten zurück. Siehe auch Base64Encode.

Vorsicht

Bei Verwendung der Agenten-Version 11.33 oder früher kann die Funktion Base64Decode einen abgeschnittenen oder falschen Wert zurückgeben, wenn der Base64-kodierte String nicht mit = oder == ergänzt wird. Bei Verwendung der Agenten-Version 11.34 oder später werden Base64-kodierte Strings wie vorgesehen behandelt.

Beispiele

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

Deklaration

string Base64Encode(type arg)

Syntax

Base64Encode(<arg>)

Erforderliche Parameter

  • arg: Wert, der kodiert werden soll

Beschreibung

Kodiert die Argumentdaten und behandelt die Zeichen in einem String als binäre Daten, es sei denn, die Eingabe ist bereits binär. Wenn der Typ des Arguments nicht binär oder ein String ist, wird der Argumentwert vor der Verschlüsselung zuerst in einen String umgewandelt.

Ein Zeilenumbruchzeichen (\n) wird nach jedem 64. Zeichen des kodierten Ergebnisstrings hinzugefügt. Da viele Implementierungen von Base64 Zeilenumbrüche enthalten, um die maximale Zeilenlänge des kodierten Ergebnisses zu begrenzen, sollte dies nur bei Bedarf ausdrücklich deaktiviert werden. Um dies zu deaktivieren, setzen Sie die jitterbit.base64.encoded.string.no.wrap Jitterbit-Variable auf true, bevor Sie diese Funktion aufrufen. Diese Variable wird mit String-Daten bei Verwendung von Agenten der Version 10.49 und höher unterstützt und mit binären Daten bei Verwendung von 10.x-Agenten 10.66 und höher sowie 11.x-Agenten 11.4 und höher.

Siehe auch Base64Decode.

Beispiele

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

Deklaration

string Base64EncodeFile(string sourceId[, string filename])

Syntax

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

Erforderliche Parameter

  • sourceId: Ein String-Verweis auf einen Pfad zu einer Aktivität, die mit einem Dateityp-Endpunkt im aktuellen Projekt verbunden ist und eine Binärdatei zurückgibt. Wenn ein Array von Dateinamen zurückgegeben wird, wird der erste verwendet.

Optionale Parameter

  • filename: Ein String-Dateiname, der verwendet wird, um den Wert zu überschreiben, der durch die sourceId-Quelle zurückgegeben wird.

Beschreibung

Liest eine Binärdatei aus der angegebenen Quellaktivität und gibt den Inhalt als Base64-kodierten String zurück. Diese Methode wird allgemein für Dateien verwendet, die binär sein könnten. Um eine Textdatei zu lesen, verwenden Sie stattdessen die Funktion ReadFile.

Die in dieser Funktion verwendete Quelle muss als Aktivität definiert sein, die mit einem Dateityp-Endpunkt im aktuellen Projekt verbunden ist. Dazu gehören konfigurierte File Share-, FTP-, HTTP-, Local Storage- und Temporary Storage-Aktivitäten. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Endpunkten im Abschnitt Endpunkte in Jitterbit Script.

Diese Methode gibt den Inhalt der Datei zurück, auf die die angegebene Quelle verweist. Wenn der Quellfilter mehr als eine Datei auswählt, wird die erste verwendet. Es wird empfohlen, eine Quelle anzugeben, die eine einzelne Datei eindeutig identifiziert.

Der zweite Parameter, filename, ist optional und kann verwendet werden, um den in der Aktivitätskonfiguration zurückgegebenen Dateinamen zu überschreiben. Alternativ kann eine globale Variable verwendet werden, um den Dateinamen in der Aktivitätskonfiguration zu überschreiben. Globale Variablen werden in der Aktivitätskonfiguration als [de_name] referenziert.

Wenn eine Datei nicht gefunden wird, wird ein Fehler ausgelöst.

Ein Zeilenumbruchzeichen (\n) wird nach jedem 64. Zeichen der kodierten Ergebniszeichenfolge hinzugefügt. Da viele Implementierungen von Base64 Zeilenumbrüche enthalten, um die maximale Zeilenlänge des kodierten Ergebnisses zu begrenzen, sollte dies nur bei Bedarf ausdrücklich deaktiviert werden. Um dies zu deaktivieren, setzen Sie die jitterbit.base64.encoded.string.no.wrap Jitterbit-Variable auf true, bevor Sie diese Funktion aufrufen. Diese Variable wird mit Zeichendaten bei Verwendung von Agenten der Version 10.49 und höher unterstützt und mit Binärdaten bei Verwendung von Agenten der Version 10.x 10.66 und höher sowie 11.x Agenten 11.4 und höher.

Siehe auch Base64Decode.

Beispiele

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

Deklaration

string MD5(type arg)

Syntax

MD5(<arg>)

Erforderliche Parameter

  • arg: Wert, der gehasht werden soll

Beschreibung

Wendet die MD5-Hashfunktion auf das bereitgestellte Argument an. Der Hash wird als 64-Bit-Zeichenfolge von Hexadezimalzahlen zurückgegeben. Nicht-Zeichenfolgendaten werden zuerst in eine Zeichenfolge umgewandelt.

Vorsicht

Bei Verwendung mit Agenten der Version 10.63 und früher oder 11.1 und früher erzeugt diese Funktion keine korrekten Werte für Binärdateien wie ZIP oder PDF. Dieses Verhalten kann bei späteren Agentenversionen mithilfe der Jitterbit-Variable $jitterbit.md5.hash.use.file.mode.string.only angewendet werden.

Beispiele

MD5("hello world!");
// Gibt "fc3ff98e8c6a0d3087d515c0473f8677" zurück

MD5AsTwoNumbers

Deklaration

array MD5AsTwoNumbers(type arg)

Syntax

MD5AsTwoNumbers(<arg>)

Erforderliche Parameter

  • arg: Wert, der gehasht werden soll

Beschreibung

Wendet die MD5-Hashfunktion auf einen Eingabestring an und gibt das Ergebnis als Array mit zwei 64-Bit-Zahlen zurück. Nicht-String-Daten werden zuerst in einen String umgewandelt.

Beispiele

MD5AsTwoNumbers("hello world!");
// Gibt "{8612640914790536583, 3462540840444444668}" zurück

SHA256

Deklaration

string SHA256(type arg)

Syntax

SHA256(<arg>)

Erforderliche Parameter

  • arg: Wert, der gehasht werden soll

Beschreibung

Wendet die SHA-256-Hashfunktion auf einen Eingabestring an. Der zurückgegebene Hash ist ein String aus 64 hexadezimalen Zahlen.

Wenn die Eingabe ein String ist, wird sie zuerst in die UTF-8-Byte-Darstellung umgewandelt. Nicht-String-Daten werden zuerst in einen String umgewandelt.

Vorsicht

Bei Verwendung mit Agenten der Version 10.63 und früher oder 11.1 und früher erzeugt diese Funktion keine korrekten Werte für Binärdateien wie ZIP oder PDF. Dieses Verhalten kann auf späteren Agenten-Versionen angewendet werden, indem die Jitterbit-Variable $jitterbit.md5.hash.use.file.mode.string.only verwendet wird.

Beispiele

SHA256("hello world!");
// Gibt "7509e5bda0c762d2bac7f90d758b5b2263fa01ccbc542ab5e3df163be08e6ca9" zurück