Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core für Entwickler > agorum core JavaScript-API
Diese JavaScript-Bibliothek common/hash stellt eine Builder-basierte API zur Berechnung kryptografischer Hash-Werte bereit. Sie unterstützt verschiedene Algorithmen (MD5, SHA-Familie, SHA-3, SHAKE) und kann Eingaben als String, Byte-Array, InputStream oder agorum core Objekt verarbeiten.
Binden Sie die Bibliothek stets am Anfang eines Skripts ein:
let hash = require('common/hash');
Folgende Konstanten für gängige Algorithmen können verwendet werden:
| Konstante | Wert |
|---|---|
hash.MD2 |
MD2 |
hash.MD5 |
MD5 |
hash.SHA_1 |
SHA-1 |
hash.SHA_224 |
SHA-224 |
hash.SHA_256 |
SHA-256 |
hash.SHA_384 |
SHA-384 |
hash.SHA_512 |
SHA-512 |
hash.SHA_512_224 |
SHA-512/224 |
hash.SHA_512_256 |
SHA-512/256 |
hash.SHA3_256 |
SHA3-256 |
hash.SHA3_512 |
SHA3-512 |
hash.SHAKE128 |
SHAKE128 |
hash.SHAKE256 |
SHAKE256 |
Tipp: Nutzen Sie die Konstanten, um Tippfehler in Algorithmus-Namen zu vermeiden (z. B. hash.SHA_256 statt 'SHA-256').
hash(algorithm, [provider])Erstellt einen neuen Hash-Builder für den angegebenen Algorithmus.
Syntax
let builder = hash(algorithm, provider);
Parameter
| Parameter | Beschreibung | Pflicht | Standard |
|---|---|---|---|
algorithm |
Hash-Algorithmus als String, z. B. 'SHA-256' oder 'MD5'. Alternativ können die exportierten Konstanten verwendet werden. |
ja | – |
provider |
Optionaler Name eines Java-Security-Providers. | nein | undefined |
Rückgabewerte
Ein Builder-Objekt mit den Methoden add(input) und get().
Der Builder wird über die hash-Hauptfunktion erzeugt und bietet zwei Methoden.
builder.add(input)
Fügt Eingabedaten zur Hash-Berechnung hinzu. Kann mehrfach aufgerufen werden (Chaining), um verschiedene Datenquellen in einen Hash einfließen zu lassen.
| Parameter | Typ | Beschreibung |
|---|---|---|
input |
string |
Ein Text, der als UTF-8 kodiert wird |
byte[] |
Ein Java-Byte-Array | |
InputStream |
Ein Java-InputStream (wird vollständig gelesen und geschlossen) | |
agorum.Object |
Ein agorum core Objekt (der Content-Stream wird gelesen) |
Rückgabe: Builder (für Method-Chaining)
Fehler: Wirft einen Error, wenn input falsy ist (null, undefined, '').
builder.get()
Berechnet den finalen Hash-Digest und gibt ihn als Byte-Array zurück.
Rückgabe: byte[] – Der berechnete Hash als Java-Byte-Array
Hinweis: Nach dem Aufruf von get() wird der interne MessageDigest zurückgesetzt. Der Builder kann danach erneut verwendet werden.
let hash = require('common/hash');
let digest = hash(hash.SHA_256).add('Hallo Welt').get();
let hash = require('common/hash');
let digest = hash(hash.MD5).add('test@example.com').get();
let hash = require('common/hash');
let objects = require('common/objects');
let file = objects.find('/agorum/roi/Files/Demo/Willkommen.pdf');
let digest = hash(hash.SHA_256)
.add(file) // uses file.contentStream
.get();
let hash = require('common/hash');
let objects = require('common/objects');
let file = objects.find('/agorum/roi/Files/Demo/Einstieg zu agorum core.docx');
let stream = file.contentStream;
let digest = hash(hash.MD5).add(stream).get();
Hinweis: Wenn Sie einen agorum.InputStream übergeben, wird dieser vollständig gelesen und anschließend geschlossen.
Da builder.get() ein Byte-Array zurückgibt, lässt sich der Hash zur Speicherung als String, etwa für ein Metadatum, einfach mit der Bibliothek common/base64 kodieren.
Voraussetzung: Bevor das Metadatum auf einem Objekt gesetzt werden kann, muss das Metadatum in der metadata.yml eines Konfigurationsprojekts definiert werden.
let hash = require('common/hash');
let base64 = require('common/base64');
let objects = require('common/objects');
let metadata = require('common/metadata');
let file = objects.find('/agorum/roi/Files/Demo/Willkommen.pdf');
// calculate the hash over the file content and encode it as a Base64 string
let digest = hash(hash.SHA_256).add(file).get();
let encoded = base64.encode(digest);
// the resulting string can be stored as metadata, for example
metadata({
agorum_doc_test_content_hash: encoded
}).save(file);
Hinweis: base64.encode() akzeptiert das von builder.get() zurückgegebene byte[] direkt, sodass keine Zwischenkonvertierung nötig ist.