Zum Hauptinhalt springen

Hash@1

Der Node Hash@1 berechnet kryptografische Hashwerte aus Eingabedaten mithilfe verschiedener Hash-Algorithmen. Er unterstützt mehrere Hash-Algorithmen einschließlich MD5 und SHA-Varianten und kann sowohl Zeichenketten- als auch Base64-kodierte Eingabedaten verarbeiten.

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: Hash@1
path: $.users[*] # Path to objects containing data to hash
sourcePath: $.email # Path to value to hash
targetPath: $.emailHash # Path where hash value will be stored
algorithm: Sha256 # Hash algorithm to use
inputFormat: String # Input format: String or Base64

Parameter​

Erforderliche Parameter​

ParameterTypBeschreibung
pathstringJSONPath zu den Objekten, die die zu hashenden Daten enthalten
sourcePathstringRelativer Pfad zum zu hashenden Wert innerhalb jedes Objekts
targetPathstringRelativer Pfad, unter dem der Hashwert gespeichert wird
algorithmenumFür die Berechnung zu verwendender Hash-Algorithmus

Optionale Parameter​

ParameterTypStandardBeschreibung
inputFormatenumStringEingabeformat: String für UTF-8-Text oder Base64

Hash-Algorithmen​

Der Node unterstützt die folgenden kryptografischen Hash-Algorithmen:

AlgorithmusBeschreibungHash-LängeAusgabebeispiel
Md5MD5 (128-Bit-Hash)32 Zeichen5d41402abc4b2a76b9719d911017c592
Sha1SHA-1 (160-Bit-Hash)40 Zeichenaaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
Sha256SHA-256 (256-Bit-Hash)64 Zeichene3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Sha384SHA-384 (384-Bit-Hash)96 Zeichen38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274...
Sha512SHA-512 (512-Bit-Hash)128 Zeichencf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47...

Eingabeformate​

String-Format​

  • Die Eingabe wird als UTF-8-kodierter Text behandelt
  • Standardformat für die meisten Anwendungsfälle
  • Behandelt alle Unicode-Zeichen korrekt

Base64-Format​

  • Die Eingabe wird als Base64-kodierte Daten behandelt
  • Die Base64-Zeichenkette wird vor dem Hashing in Bytes dekodiert
  • Nützlich zum Hashen von Binärdaten, die als Base64 gespeichert sind

Hash-Ausgabe​

  • Format: Hexadezimale Zeichenkette in Kleinbuchstaben
  • Zeichensatz: 0-9 und a-f
  • Konsistenz: Dieselbe Eingabe erzeugt immer denselben Hash
  • Keine Kollisionsbehandlung: Unterschiedliche Eingaben können theoretisch denselben Hash erzeugen (sehr selten)

Beispiele​

Beispiel 1: E-Mail-Adressen hashen​

SHA256-Hashes von Benutzer-E-Mail-Adressen erstellen:

transformations:
- type: Hash@1
path: $.users[*]
sourcePath: $.email
targetPath: $.emailHash
algorithm: Sha256
inputFormat: String

Eingabe:

{
"users": [
{ "id": 1, "email": "john@example.com" },
{ "id": 2, "email": "jane@company.org" },
{ "id": 3, "email": "bob@test.net" }
]
}

Ausgabe:

{
"users": [
{ "id": 1, "email": "john@example.com", "emailHash": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08" },
{ "id": 2, "email": "jane@company.org", "emailHash": "a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3" },
{ "id": 3, "email": "bob@test.net", "emailHash": "e258d248fda94c63753607f7c4494ee0fcbe92f1a76bfdac795c9d84101eb317" }
]
}

Beispiel 2: Passwörter mit verschiedenen Algorithmen hashen​

Passwörter zum Vergleich mit verschiedenen Algorithmen hashen:

transformations:
- type: Hash@1
path: $.credentials[*]
sourcePath: $.password
targetPath: $.md5Hash
algorithm: Md5
inputFormat: String
- type: Hash@1
path: $.credentials[*]
sourcePath: $.password
targetPath: $.sha256Hash
algorithm: Sha256
inputFormat: String

Eingabe:

{
"credentials": [
{ "username": "admin", "password": "secretPassword123" },
{ "username": "user", "password": "myPassword456" }
]
}

Ausgabe:

{
"credentials": [
{
"username": "admin",
"password": "secretPassword123",
"md5Hash": "e99a18c428cb38d5f260853678922e03",
"sha256Hash": "2c70e12b7a0646f92279f427c7b38e7334d8e5389cff167a1dc30e73f826b683"
},
{
"username": "user",
"password": "myPassword456",
"md5Hash": "d8578edf8458ce06fbc5bb76a58c5ca4",
"sha256Hash": "b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb9"
}
]
}

Beispiel 3: Base64-kodierte Daten hashen​

Inhalt hashen, der als Base64 gespeichert ist:

transformations:
- type: Hash@1
path: $.files[*]
sourcePath: $.base64Content
targetPath: $.contentHash
algorithm: Sha256
inputFormat: Base64

Eingabe:

{
"files": [
{ "name": "document.txt", "base64Content": "SGVsbG8gV29ybGQh" },
{ "name": "data.bin", "base64Content": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==" }
]
}

Ausgabe:

{
"files": [
{ "name": "document.txt", "base64Content": "SGVsbG8gV29ybGQh", "contentHash": "a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e" },
{ "name": "data.bin", "base64Content": "iVBORw0KGgo...", "contentHash": "a3a5e715f0cc574a73c3f9bebb6bc58b32a30682ab1c3cb52cad8b4b969dfa69" }
]
}

Beispiel 4: Eindeutige Bezeichner erstellen​

Eindeutige IDs durch Hashen kombinierter Daten erzeugen:

transformations:
- type: Hash@1
path: $.orders[*]
sourcePath: $.combinedKey
targetPath: $.uniqueId
algorithm: Sha1
inputFormat: String

Eingabe:

{
"orders": [
{ "customer": "CUST001", "date": "2023-10-15", "combinedKey": "CUST001-2023-10-15-ORD001" },
{ "customer": "CUST002", "date": "2023-10-16", "combinedKey": "CUST002-2023-10-16-ORD002" }
]
}

Ausgabe:

{
"orders": [
{ "customer": "CUST001", "date": "2023-10-15", "combinedKey": "CUST001-2023-10-15-ORD001", "uniqueId": "1a79a4d60de6718e8e5b326e338ae533c8e55c5b" },
{ "customer": "CUST002", "date": "2023-10-16", "combinedKey": "CUST002-2023-10-16-ORD002", "uniqueId": "6dcd4ce23d88e2ee9568ba546c007c63d9131c1b" }
]
}

Beispiel 5: Hash für Datenintegrität​

Prüfsummen zur Überprüfung der Datenintegrität erstellen:

transformations:
- type: Hash@1
path: $.records[*]
sourcePath: $.data
targetPath: $.checksum
algorithm: Sha512
inputFormat: String

Eingabe:

{
"records": [
{ "id": 1, "data": "Important data that needs integrity verification" },
{ "id": 2, "data": "Another critical piece of information" }
]
}

Ausgabe:

{
"records": [
{ "id": 1, "data": "Important data that needs integrity verification", "checksum": "a42c10e7023c0d955b49f6c729f6b7a4c1ca8b3d5a2b1c88d2e5f6b8c3d1f5e2..." },
{ "id": 2, "data": "Another critical piece of information", "checksum": "b83c45f9123d0e866c59f7d839f7c8b5d2db9c4e6b3c2d99e3f6g9c4e2f6g3..." }
]
}

Beispiel 6: Hash für Cache-Schlüssel​

Cache-Schlüssel aus Anfrageparametern erzeugen:

transformations:
- type: Hash@1
path: $.requests[*]
sourcePath: $.cacheKey
targetPath: $.hashedCacheKey
algorithm: Sha256
inputFormat: String

Eingabe:

{
"requests": [
{ "endpoint": "/api/users", "params": "page=1&limit=50", "cacheKey": "/api/users?page=1&limit=50" },
{ "endpoint": "/api/orders", "params": "status=active", "cacheKey": "/api/orders?status=active" }
]
}

Ausgabe:

{
"requests": [
{ "endpoint": "/api/users", "params": "page=1&limit=50", "cacheKey": "/api/users?page=1&limit=50", "hashedCacheKey": "3b7e72f5c8d9a1b4e6f8a2c5d7e9f1b3c4d6e8f0a1b3c5d7e9f1b3c5d7e9f1b3" },
{ "endpoint": "/api/orders", "params": "status=active", "cacheKey": "/api/orders?status=active", "hashedCacheKey": "7f9e82d5b3a1c4e6f8a0b2c4d6e8f1a3b5c7d9e1f3a5b7c9e1f3a5b7c9e1f3a5" }
]
}

Beispiel 7: Mehrere Hash-Algorithmen​

Mehrere Hashes zum Vergleich oder für unterschiedliche Zwecke berechnen:

transformations:
- type: Hash@1
path: $.documents[*]
sourcePath: $.content
targetPath: $.quickHash
algorithm: Md5
inputFormat: String
- type: Hash@1
path: $.documents[*]
sourcePath: $.content
targetPath: $.secureHash
algorithm: Sha256
inputFormat: String

Eingabe:

{
"documents": [
{ "title": "Report 1", "content": "This is the content of the first report" },
{ "title": "Report 2", "content": "This is the content of the second report" }
]
}

Ausgabe:

{
"documents": [
{
"title": "Report 1",
"content": "This is the content of the first report",
"quickHash": "8b1a9953c4611296a827abf8c47804d7",
"secureHash": "f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2"
},
{
"title": "Report 2",
"content": "This is the content of the second report",
"quickHash": "3c59dc048e8850243be8079a5c74d079",
"secureHash": "b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78"
}
]
}

Anwendungsfälle​

  • Datenintegrität: Prüfsummen erstellen, um zu verifizieren, dass Daten nicht beschädigt wurden
  • Eindeutige Bezeichner: Konsistente eindeutige IDs aus Datenkombinationen erzeugen
  • Cache-Schlüssel: Hash-basierte Cache-Schlüssel für effiziente Caching-Systeme erstellen
  • Passwortspeicherung: Passwörter zur sicheren Speicherung hashen (starke Algorithmen verwenden)
  • Duplikaterkennung: Doppelte Inhalte durch Vergleich von Hashes identifizieren
  • Digitaler Fingerabdruck: Inhalts-Fingerabdrücke zur Nachverfolgung und Identifizierung erstellen
  • Sicherheitsoperationen: Authentifizierungs- und Verifizierungsabläufe unterstützen
  • Datenanonymisierung: Anonymisierte Bezeichner erstellen und dabei die Eindeutigkeit bewahren

Sicherheitsüberlegungen​

Algorithmusstärke​

  • MD5: Kryptografisch gebrochen, für Sicherheitszwecke vermeiden
  • SHA-1: Für kryptografische Verwendung veraltet, für Sicherheit vermeiden
  • SHA-256/384/512: Derzeit sicher und für kryptografische Anwendungen empfohlen

Best Practices​

  • Verwenden Sie SHA-256 oder höher für sicherheitskritische Anwendungen
  • Salzen Sie Passwörter vor dem Hashing (zufällige Daten hinzufügen)
  • Verlassen Sie sich nicht allein auf Hashing für Datensicherheit
  • Ziehen Sie Schlüsselableitungsfunktionen in Betracht (PBKDF2, scrypt, Argon2) für das Passwort-Hashing

Datenschutz​

  • Hashing ist keine Verschlüsselung – die ursprünglichen Daten können nicht wiederhergestellt werden
  • Rainbow-Table-Angriffe sind für gängige Eingaben möglich
  • Seien Sie vorsichtig mit sensiblen Daten – ziehen Sie zusätzlichen Schutz in Betracht

Fehlerbehandlung​

Der Node löst Fehler aus, wenn:

  • Der Eingabe-Data-Context null ist
  • Quellwerte null sind (strikte Null-Prüfung)
  • Die Base64-Dekodierung bei ungültiger Base64-Eingabe fehlschlägt
  • JSONPath-Ausdrücke ungültig sind
  • Ein nicht unterstützter Hash-Algorithmus angegeben wird

Hinweise zum Verhalten​

  • Null-Intoleranz: Anders als andere Nodes löst dieser Node bei Null-Eingabewerten Ausnahmen aus
  • Konsistente Ausgabe: Dieselbe Eingabe erzeugt immer denselben Hashwert
  • Groß-/Kleinschreibung beachten: Eingabezeichenketten sind für die Hash-Berechnung case-sensitive
  • UTF-8-Kodierung: Zeichenketten-Eingaben werden vor dem Hashing in UTF-8-Bytes konvertiert
  • Ausgabe in Kleinbuchstaben: Hashwerte werden immer im hexadezimalen Format in Kleinbuchstaben zurückgegeben
  • Speichereffizient: Verwendet Streaming-Hash-Berechnung für große Eingaben

Hinweise zur Performance​

  • Algorithmus-Performance: MD5 am schnellsten, SHA-512 am langsamsten, SHA-256 gutes Gleichgewicht
  • Eingabegröße: Größere Eingaben benötigen länger zum Hashen
  • Speichernutzung: Die Hash-Berechnung verwendet minimalen Speicher, unabhängig von der Eingabegröße
  • CPU-intensiv: Die Hash-Berechnung ist eine CPU-gebundene Operation

Verwandte Nodes​