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
| Parameter | Typ | Beschreibung |
|---|---|---|
path | string | JSONPath zu den Objekten, die die zu hashenden Daten enthalten |
sourcePath | string | Relativer Pfad zum zu hashenden Wert innerhalb jedes Objekts |
targetPath | string | Relativer Pfad, unter dem der Hashwert gespeichert wird |
algorithm | enum | Für die Berechnung zu verwendender Hash-Algorithmus |
Optionale Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
inputFormat | enum | String | Eingabeformat: String für UTF-8-Text oder Base64 |
Hash-Algorithmen
Der Node unterstützt die folgenden kryptografischen Hash-Algorithmen:
| Algorithmus | Beschreibung | Hash-Länge | Ausgabebeispiel |
|---|---|---|---|
Md5 | MD5 (128-Bit-Hash) | 32 Zeichen | 5d41402abc4b2a76b9719d911017c592 |
Sha1 | SHA-1 (160-Bit-Hash) | 40 Zeichen | aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d |
Sha256 | SHA-256 (256-Bit-Hash) | 64 Zeichen | e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 |
Sha384 | SHA-384 (384-Bit-Hash) | 96 Zeichen | 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274... |
Sha512 | SHA-512 (512-Bit-Hash) | 128 Zeichen | cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47... |
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-9unda-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
- Base64Encode@1: Daten vor dem Hashing in Base64 kodieren
- Base64Decode@1: Base64-Daten zur Verifizierung dekodieren
- TransformString@1: Zeichenketten vor dem Hashing manipulieren
- SetPrimitiveValue@1: Hashwerte in Datenstrukturen setzen