Zum Hauptinhalt springen

Base64Encode@1

Der Node Base64Encode@1 konvertiert Zeichenkettenwerte in das Base64-kodierte Format. Er kodiert Zeichenketten mit der UTF-8-Zeichenkodierung und ist unverzichtbar für die Datenserialisierung, sichere Übertragung und Vorbereitung von Daten für APIs oder Speichersysteme, die das Base64-Format erfordern.

Adapter-Voraussetzungen​

  • Allgemeine Verfügbarkeit: Alle Adapter unterstützen diesen Node-Typ.

Node-Konfiguration​

Für die Felder path, targetPath, targetValueWriteMode und targetValueKind siehe Überblick.

transformations:
- type: Base64Encode@1
path: $.users[*] # Path to objects containing string data
sourcePath: $.password # Path to string value to encode
targetPath: $.encodedPassword # Path where encoded value will be stored

Parameter​

Erforderliche Parameter​

ParameterTypBeschreibung
pathstringJSONPath zu den Objekten, die die zu kodierenden Zeichenkettendaten enthalten
sourcePathstringRelativer Pfad zum Zeichenkettenwert innerhalb jedes Objekts
targetPathstringRelativer Pfad, unter dem der Base64-kodierte Wert gespeichert wird

Kodierungsprozess​

Der Node führt die Base64-Kodierung in diesen Schritten durch:

  1. Objektauswahl: Verwendet path, um Objekte auszuwählen, die Zeichenkettendaten enthalten
  2. Wertabruf: Extrahiert den Zeichenkettenwert aus sourcePath
  3. UTF-8-Konvertierung: Konvertiert die Zeichenkette in ein UTF-8-Byte-Array
  4. Base64-Kodierung: Konvertiert das Byte-Array in eine Base64-Zeichenkette
  5. Ergebnisspeicherung: Speichert die kodierte Zeichenkette unter targetPath

Wertbehandlung​

  • Null-Erhaltung: Null-Werte werden ohne Kodierung beibehalten
  • Typkonvertierung: Nicht-Zeichenketten-Werte werden vor der Kodierung in Zeichenketten konvertiert
  • Leere Zeichenketten: Leere Zeichenketten werden kodiert (ergeben eine leere Base64-Zeichenkette)
  • UTF-8-Kodierung: Alle Zeichenketten werden mit dem UTF-8-Zeichensatz kodiert

Beispiele​

Beispiel 1: Benutzerpasswörter kodieren​

Klartext-Passwörter in das Base64-Format kodieren:

transformations:
- type: Base64Encode@1
path: $.users[*]
sourcePath: $.password
targetPath: $.encodedPassword

Eingabe:

{
"users": [
{ "id": "user1", "password": "password123" },
{ "id": "user2", "password": "mySecret456" }
]
}

Ausgabe:

{
"users": [
{ "id": "user1", "password": "password123", "encodedPassword": "cGFzc3dvcmQxMjM=" },
{ "id": "user2", "password": "mySecret456", "encodedPassword": "bXlTZWNyZXQ0NTY=" }
]
}

Beispiel 2: API-Schlüssel kodieren​

API-Schlüssel zur sicheren Speicherung in das Base64-Format konvertieren:

transformations:
- type: Base64Encode@1
path: $.services[*]
sourcePath: $.apiKey
targetPath: $.encodedApiKey

Eingabe:

{
"services": [
{ "name": "API1", "apiKey": "secret-key-123" },
{ "name": "API2", "apiKey": "another-secret" }
]
}

Ausgabe:

{
"services": [
{ "name": "API1", "apiKey": "secret-key-123", "encodedApiKey": "c2VjcmV0LWtleS0xMjM=" },
{ "name": "API2", "apiKey": "another-secret", "encodedApiKey": "YW5vdGhlci1zZWNyZXQ=" }
]
}

Beispiel 3: Konfigurationswerte kodieren​

Sensible Konfigurationsparameter kodieren:

transformations:
- type: Base64Encode@1
path: $.configuration.secure[*]
sourcePath: $.value
targetPath: $.encodedValue

Eingabe:

{
"configuration": {
"secure": [
{ "key": "db_password", "value": "database_pass" },
{ "key": "api_token", "value": "token_123456" }
]
}
}

Ausgabe:

{
"configuration": {
"secure": [
{ "key": "db_password", "value": "database_pass", "encodedValue": "ZGF0YWJhc2VfcGFzcw==" },
{ "key": "api_token", "value": "token_123456", "encodedValue": "dG9rZW5fMTIzNDU2" }
]
}
}

Beispiel 4: Dateiinhalt kodieren​

Textinhalt für Data-URI oder API-Übertragung vorbereiten:

transformations:
- type: Base64Encode@1
path: $.files[*]
sourcePath: $.textContent
targetPath: $.base64Content

Eingabe:

{
"files": [
{ "name": "readme.txt", "textContent": "Hello World!" },
{ "name": "config.json", "textContent": "{\"setting\": \"value\"}" }
]
}

Ausgabe:

{
"files": [
{ "name": "readme.txt", "textContent": "Hello World!", "base64Content": "SGVsbG8gV29ybGQh" },
{ "name": "config.json", "textContent": "{\"setting\": \"value\"}", "base64Content": "eyJzZXR0aW5nIjogInZhbHVlIn0=" }
]
}

Beispiel 5: Verschiedene Datentypen behandeln​

Verschiedene Datentypen kodieren (automatisch in Zeichenketten konvertiert):

transformations:
- type: Base64Encode@1
path: $.items[*]
sourcePath: $.data
targetPath: $.encodedData

Eingabe:

{
"items": [
{ "id": 1, "data": "hello" },
{ "id": 2, "data": 12345 },
{ "id": 3, "data": true },
{ "id": 4, "data": null }
]
}

Ausgabe:

{
"items": [
{ "id": 1, "data": "hello", "encodedData": "aGVsbG8=" },
{ "id": 2, "data": 12345, "encodedData": "MTIzNDU=" },
{ "id": 3, "data": true, "encodedData": "VHJ1ZQ==" },
{ "id": 4, "data": null, "encodedData": null }
]
}

Beispiel 6: JSON-Daten kodieren​

Strukturierte Daten als Base64-Zeichenketten kodieren:

transformations:
- type: Base64Encode@1
path: $.requests[*]
sourcePath: $.payload
targetPath: $.encodedPayload

Eingabe:

{
"requests": [
{ "url": "/api/users", "payload": "{\"name\":\"John\",\"age\":30}" },
{ "url": "/api/orders", "payload": "{\"items\":[\"A\",\"B\"]}" }
]
}

Ausgabe:

{
"requests": [
{ "url": "/api/users", "payload": "{\"name\":\"John\",\"age\":30}", "encodedPayload": "eyJuYW1lIjoiSm9obiIsImFnZSI6MzB9" },
{ "url": "/api/orders", "payload": "{\"items\":[\"A\",\"B\"]}", "encodedPayload": "eyJpdGVtcyI6WyJBIiwiQiJdfQ==" }
]
}

Beispiel 7: Für E-Mail-Header kodieren​

Text für die E-Mail-Header-Kodierung vorbereiten:

transformations:
- type: Base64Encode@1
path: $.emails[*]
sourcePath: $.subject
targetPath: $.encodedSubject

Eingabe:

{
"emails": [
{ "to": "user@example.com", "subject": "Héllo Wörld with Special Chärs" },
{ "to": "admin@example.com", "subject": "日本語のタイトル" }
]
}

Ausgabe:

{
"emails": [
{ "to": "user@example.com", "subject": "Héllo Wörld with Special Chärs", "encodedSubject": "SMOpbGxvIFfDtnJsZCB3aXRoIFNwZWNpYWwgQ2jDpHJz" },
{ "to": "admin@example.com", "subject": "日本語のタイトル", "encodedSubject": "65e5672c8a9e44gu44ov44kk44oi44or" }
]
}

Anwendungsfälle​

  • Anmeldedaten speichern: Sensible Daten für Konfigurationsdateien kodieren (nicht zur Sicherheit)
  • API-Übertragung: Binärdaten für JSON-/XML-APIs vorbereiten
  • Data-URIs: Data-URIs zum Einbetten von Inhalten in Webseiten erstellen
  • Datei-Upload: Dateiinhalte für API-Payloads kodieren
  • E-Mail-Header: Nicht-ASCII-Zeichen in E-Mail-Headern kodieren
  • Konfigurationsverschleierung: Konfigurationswerte verschleiern (nicht zur Sicherheit)
  • Datenserialisierung: Binärdaten für textbasierte Protokolle vorbereiten

Fehlerbehandlung​

Der Node löst Fehler aus, wenn:

  • Der Eingabe-Data-Context null ist
  • JSONPath-Ausdrücke ungültig sind

Hinweise zum Verhalten​

  • UTF-8-Kodierung: Alle Zeichenketten werden vor der Base64-Kodierung in UTF-8-Bytes konvertiert
  • Null-Sicherheit: Null-Werte werden beibehalten, ohne Fehler zu verursachen
  • Typkonvertierung: Nicht-Zeichenketten-Werte werden vor der Kodierung mit ToString() konvertiert
  • Speichereffizient: Die Verarbeitung erfolgt pro Objekt, ohne alle Daten auf einmal zu laden
  • Standardkodierung: Verwendet die standardmäßige Base64-Kodierung (RFC 4648)

Sicherheitsüberlegungen​

  • Keine Verschlüsselung: Base64 ist eine Kodierung, keine Verschlüsselung – sie bietet keine Sicherheit
  • Nur Verschleierung: Nur zur Kompatibilität des Datenformats verwenden, nicht zum Verbergen sensibler Daten
  • Umkehrbar: Die Base64-Kodierung ist leicht umkehrbar und sollte nicht zur Sicherheit herangezogen werden
  • Echte Sicherheit: Verwenden Sie echte Verschlüsselungsmethoden zum Schutz sensibler Daten

Hinweise zur Performance​

  • Effiziente Verarbeitung: Verarbeitet Objekte einzeln für eine bessere Speichernutzung
  • Zeichenkettenkonvertierung: Nicht-Zeichenketten-Werte erfordern vor der Kodierung eine Zeichenkettenkonvertierung
  • UTF-8-Overhead: Die UTF-8-Kodierung kann die Byte-Anzahl für einige Zeichensätze erhöhen
  • Base64-Vergrößerung: Die Base64-Kodierung erhöht die Datengröße um etwa 33 %

Verwandte Nodes​