Kryptographische Funktionen in Jitterbit Studio
Kryptographische Funktionen dienen zur Durchführung grundlegender Verschlüsselung und Entschlüsselung mit Standardalgorithmen und -funktionen.
Dateien mit Base64 lesen und schreiben
Die Base64-Funktionen können beim Lesen und Schreiben von Dateien in folgenden häufigen Szenarien verwendet werden:
Ein Szenario besteht darin, eine vorhandene Datei (z. B. ein PDF) mit der Funktion Base64EncodeFile zu lesen und den Inhalt dieser Datei dann in einen Endpunkt wie Salesforce zu schreiben.
Dazu erstellen Sie ein Skript, das die Datei aus einer Quelle liest und entsprechende globale Variablen setzt. Anschließend erstellen Sie eine Transformation, die diese globalen Variablen verwendet und sie in einer Zuordnung zum Schreiben in Salesforce einsetzt:
// 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 die Datei in einer neuen Textdatei gespeichert wird.
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-codierter AES-verschlüsselter Wertpassphrase: Passwort, das zum Verschlüsseln der Zeichenkette mit der FunktionAESEncryptionverwendet wird
Optionale Parameter
salt: Hexadezimales String-Salt, das zum Verschlüsseln der Zeichenkette mit der FunktionAESEncryptionverwendet wirdkeyLength: Schlüssellänge, die zum Verschlüsseln der Zeichenkette mit der FunktionAESEncryptionverwendet wirditerations: Anzahl der Iterationen, die zum Verschlüsseln der Zeichenkette mit der FunktionAESEncryptionverwendet werden
Beschreibung
Diese Funktion entschlüsselt eine Zeichenkette, die mit dem AES-Algorithmus der Funktion AESEncryption verschlüsselt wurde.
Die entschlüsselte Ausgabe wird als Zeichenkette zurückgegeben. Weitere Details finden Sie unter AESEncryption.
Informationen zur Fehlerbehebung finden Sie unter AESDecryption schlägt mit Daten fehl, die unter OpenSSL 3 verschlüsselt wurden im Leitfaden zur Fehlerbehebung bei Operationen.
Hinweis
Um Text zu entschlüsseln, der mit einem AES-Algorithmus unter Verwendung von OpenSSL 3 verschlüsselt wurde, setzen Sie jitterbit.scripting.aes.default upstream dieser Funktion auf true. Diese Variable wird bei Verwendung von Agent-Versionen 11.42 oder später unterstützt.
Alternativ unterstützt AESDecryptionEx standardmäßig die AES-Entschlüsselung mit OpenSSL 3 bei Verwendung von Agent-Versionen 11.42 oder später.
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: Eine Base64-codierte, von OpenSSL 3 unterstützte AES-verschlüsselte Zeichenkettekey: Der Schlüssel, der zum Verschlüsseln vonencryptedTextverwendet wurde
Optionale Parameter
iv: Der 16-Byte-Initialisierungsvektor (IV), der zum Verschlüsseln vonencryptedTextverwendet wurdekeyLength: Die Schlüssellänge, die zum Verschlüsseln vonencryptedTextverwendet wurde
Beschreibung
Diese Funktion entschlüsselt eine Zeichenkette, die mit einem AES-Algorithmus unter Verwendung von OpenSSL 3 verschlüsselt wurde. Dies umfasst Text, der außerhalb der Jitterbit Harmony-Plattform verschlüsselt wurde, und Text, der mit der Funktion AESEncryptionEx verschlüsselt wurde. Diese Funktion wird bei Verwendung von Agent-Versionen 11.42 oder später unterstützt.
Die entschlüsselte Ausgabe wird als Zeichenkette zurückgegeben. Siehe AESEncryptionEx für die Verschlüsselung.
Beispiele
// 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
Deklaration
string AESEncryption(string plainText, string passphrase[, string salt, int keyLength, int iterations])
Syntax
AESEncryption(<plainText>, <passphrase>[, <salt>, <keyLength>, <iterations>])
Erforderliche Parameter
plainText: Eine zu verschlüsselnde Zeichenkettepassphrase: Passwort zur Verschlüsselung der Zeichenkette
Optionale Parameter
salt: Hexadezimales Salt zur Verschlüsselung der Zeichenkette; falls angegeben, muss der Wert im Hexadezimalformat vorliegen (z. B."A034DD")keyLength: Schlüssellänge zur Verschlüsselung der Zeichenkette, muss 128, 192 oder 256 sein; Standard ist 256iterations: Anzahl der Iterationen zur Schlüsselerzeugung; Standard ist 1
Beschreibung
Diese Funktion verschlüsselt eine Zeichenkette mit einem AES-Algorithmus, der mit der Funktion AESDecryption entschlüsselt werden kann. Der Schlüssel wird gemäß Password-Based Cryptography Specification Version 2.0 (PKCS5S2) generiert.
Die verschlüsselte Ausgabe ist eine Base64-codierte Zeichenkette. Die Ausgabe von AESEncryption kann direkt an die Funktion AESDecryption zur Entschlüsselung übergeben werden, wobei die gleichen Parameter wie bei der Verschlüsselung der Klartextzeichenkette verwendet werden.
Hinweis
Um Text mit einem AES-Algorithmus unter Verwendung von OpenSSL 3 zu verschlüsseln, setzen Sie jitterbit.scripting.aes.default upstream dieser Funktion auf true. Diese Variable wird bei Verwendung von Agent-Versionen 11.42 oder später unterstützt.
Alternativ unterstützt AESEncryptionEx standardmäßig die AES-Verschlüsselung mit OpenSSL 3 bei Verwendung von Agent-Versionen 11.42 oder später.
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: Die zu verschlüsselnde Zeichenkettekey: Der Schlüssel zur Verschlüsselung vonplainText
Optionale Parameter
iv: Der 16-Byte-Initialisierungsvektor (IV) zur Verschlüsselung vonplainText; ein Fehler wird ausgelöst, wenn der IV nicht 16 Bytes beträgtkeyLength: Die Schlüssellänge zur Verschlüsselung vonplainText, muss 128, 192 oder 256 sein; Standard ist 256
Beschreibung
Diese Funktion verschlüsselt eine Zeichenkette mit einem AES-Algorithmus unter Verwendung von OpenSSL 3. Diese Funktion wird bei Verwendung von Agent-Versionen 11.42 oder später unterstützt.
Die verschlüsselte Ausgabe ist eine von OpenSSL 3 unterstützte, Base64-codierte Zeichenkette. Die Ausgabe von AESEncryptionEx kann direkt an die Funktion AESDecryptionEx oder außerhalb der Jitterbit Harmony-Plattform zur Entschlüsselung übergeben werden, wobei die gleichen Parameter wie bei der Verschlüsselung der Klartextzeichenkette verwendet werden.
Beispiele
// 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);
<div markdown="1" class="conf-macro output-inline" align="center" hasbody="false" macro-name="backtotop">
[[Zurück nach oben]](#top)
</div>
Base64Decode
Deklaration
binary Base64Decode(string encryptedText)
Syntax
Base64Decode(<encryptedText>)
Erforderliche Parameter
encryptedText: Eine Base64-codierte Zeichenkette
Beschreibung
Decodiert eine Base64-codierte Zeichenkette und gibt Binärdaten zurück. Siehe auch Base64Encode.
Vorsicht
Bei Verwendung von Agent-Version 11.33 oder früher kann die Funktion Base64Decode einen abgeschnittenen oder falschen Wert zurückgeben, wenn der Base64-codierten Zeichenkette = oder == nicht angehängt ist. Bei Verwendung von Agent-Version 11.34 oder später werden Base64-codierte Zeichenketten wie beabsichtigt verarbeitet.
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!"
<div markdown="1" class="conf-macro output-inline" align="center" hasbody="false" macro-name="backtotop">
[[Zurück nach oben]](#top)
</div>
Base64Encode
Deklaration
string Base64Encode(type arg)
Syntax
Base64Encode(<arg>)
Erforderliche Parameter
arg: Zu codierende Wert
Beschreibung
Codiert die Argumentdaten, wobei die Zeichen in einer Zeichenkette als Binärdaten behandelt werden, sofern die Eingabe nicht bereits binär ist. Wenn der Typ des Arguments nicht binär oder eine Zeichenkette ist, wird der Argumentwert zunächst in eine Zeichenkette konvertiert, bevor die Codierung erfolgt.
Nach jedem 64. Zeichen der codierten Ergebniszeichenkette wird ein Zeilenumbruchzeichen (\n) eingefügt. Da viele Base64-Implementierungen Zeilenumbrüche enthalten, um die maximale Zeilenlänge des codierten Ergebnisses zu begrenzen, sollte dies nur bei Bedarf explizit deaktiviert werden. Um dies zu deaktivieren, setzen Sie die Jitterbit-Variable jitterbit.base64.encoded.string.no.wrap auf true, bevor Sie diese Funktion aufrufen. Diese Variable wird mit Zeichenkettendaten bei Verwendung von Agents ab Version 10.49 und mit Binärdaten bei Verwendung von Agents ab Version 10.66 und 11.4 unterstützt.
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")
<div markdown="1" class="conf-macro output-inline" align="center" hasbody="false" macro-name="backtotop">
[[Zurück nach oben]](#top)
</div>
Base64EncodeFile
Deklaration
string Base64EncodeFile(string sourceId[, string filename])
Syntax
Base64EncodeFile(<sourceId>[, <filename>])
Erforderliche Parameter
sourceId: Ein Zeichenketten-Referenzpfad zu einer Aktivität, die einem dateibasierten Endpunkt im aktuellen Projekt zugeordnet ist und eine Binärdatei zurückgibt. Wenn ein Array von Dateinamen zurückgegeben wird, wird das erste verwendet.
Optionale Parameter
filename: Ein Zeichenketten-Dateiname, der den von der QuellesourceIdzurückgegebenen Wert überschreibt
Beschreibung
Liest eine Binärdatei aus der angegebenen Quellaktivität und gibt den Inhalt als Base64-codierte Zeichenkette zurück. Diese Methode wird in der Regel 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 einem dateibasierten Endpunkt im aktuellen Projekt zugeordnet ist. Dazu gehören konfigurierte Aktivitäten für Dateifreigabe, FTP, HTTP, lokalen Speicher und temporären Speicher. 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 Quellenfilter 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.
Nach jedem 64. Zeichen der codierten Ergebniszeichenkette wird ein Zeilenumbruchzeichen (\n) hinzugefügt. Da viele Base64-Implementierungen Zeilenumbrüche enthalten, um die maximale Zeilenlänge des codierten Ergebnisses zu begrenzen, sollte dies nur bei Bedarf explizit deaktiviert werden. Um dies zu deaktivieren, setzen Sie die Jitterbit-Variable jitterbit.base64.encoded.string.no.wrap auf true, bevor Sie diese Funktion aufrufen. Diese Variable wird mit Zeichenkettendaten bei Verwendung von Agents ab Version 10.49 und mit Binärdaten bei Verwendung von Agents ab Version 10.66 und später sowie 11.x Agents ab Version 11.4 und später unterstützt.
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-Hash-Funktion auf das bereitgestellte Argument an. Der Hash wird als Zeichenkette aus 32 Hexadezimalziffern zurückgegeben. Nicht-Zeichenkettendaten werden zunächst in eine Zeichenkette konvertiert.
Vorsicht
Bei Verwendung mit Agents ab Version 10.63 oder früher oder 11.1 oder früher generiert diese Funktion keine korrekten Werte für Binärdateien wie ZIP oder PDF. Dieses Verhalten kann auf eine spätere Agent-Version angewendet werden, indem die Jitterbit-Variable $jitterbit.md5.hash.use.file.mode.string.only verwendet wird.
Beispiele
MD5("hello world!");
// Returns "fc3ff98e8c6a0d3087d515c0473f8677"
MD5AsTwoNumbers
Deklaration
array MD5AsTwoNumbers(type arg)
Syntax
MD5AsTwoNumbers(<arg>)
Erforderliche Parameter
arg: Wert, der gehasht werden soll
Beschreibung
Wendet die MD5-Hash-Funktion auf eine Eingabezeichenkette an und gibt das Ergebnis als Array mit zwei 64-Bit-Zahlen zurück. Nicht-Zeichenkettendaten werden zunächst in eine Zeichenkette konvertiert.
Beispiele
MD5AsTwoNumbers("hello world!");
// Returns "{8612640914790536583, 3462540840444444668}"
SHA256
Deklaration
string SHA256(type arg)
Syntax
SHA256(<arg>)
Erforderliche Parameter
arg: Wert, der gehasht werden soll
Beschreibung
Wendet die SHA-256-Hash-Funktion auf eine Eingabezeichenkette an. Der zurückgegebene Hash ist eine Zeichenkette aus 64 Hexadezimalziffern.
Wenn die Eingabe eine Zeichenkette ist, wird sie zunächst in die UTF-8-Byte-Darstellung konvertiert. Nicht-Zeichenkettendaten werden zunächst in eine Zeichenkette konvertiert.
Vorsicht
Bei Verwendung mit Agents ab Version 10.63 oder früher oder 11.1 oder früher generiert diese Funktion keine korrekten Werte für Binärdateien wie ZIP oder PDF. Dieses Verhalten kann auf eine spätere Agent-Version angewendet werden, indem die Jitterbit-Variable $jitterbit.md5.hash.use.file.mode.string.only verwendet wird.
Beispiele
SHA256("hello world!");
// Returns "7509e5bda0c762d2bac7f90d758b5b2263fa01ccbc542ab5e3df163be08e6ca9"
SHA512
Deklaration
string SHA512(type arg)
Syntax
SHA512(<arg>)
Erforderliche Parameter
arg: Zu hashender Wert
Beschreibung
Wendet die SHA-512-Hashfunktion auf eine Eingabezeichenkette an. Der zurückgegebene Hash ist eine Zeichenkette aus 128 Hexadezimalziffern. Diese Funktion wird ab Agent-Version 12.9 unterstützt.
Bei einer Zeichenketteneingabe erfolgt zunächst eine Konvertierung in die UTF-8-Byte-Darstellung. Nicht-Zeichenkettendaten werden zunächst in eine Zeichenkette konvertiert.
Beispiele
SHA512("hello world!");
// Returns "db9b1cd3262dee37756a09b9064973589847caa8e53d31a9d142ea2701b1b28abd97838bb9a27068ba305dc8d04a45a1fcf079de54d607666996b3cc54f6b67c"