Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht

Navigation: Dokumentationen agorum core > agorum core für Entwickler > agorum core JavaScript-API


JavaScript-Bibliothek common/hash

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.

Verwendung

Binden Sie die Bibliothek stets am Anfang eines Skripts ein:

let hash = require('common/hash');

Algorithmus-Konstanten

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').

Funktionen

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().

Builder-Methoden

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.

Beispiele

SHA-256-Hash eines Strings

let hash = require('common/hash');

let digest = hash(hash.SHA_256).add('Hallo Welt').get();

MD5-Hash eines Strings

let hash = require('common/hash');

let digest = hash(hash.MD5).add('test@example.com').get();

Hash über den Inhalt eines agorum core Objekts berechnen

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();

Hash über einen InputStream berechnen

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.

Hash als Base64-String kodieren (z. B. für Metadaten)

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.