Hash/MAC-Wert generieren (HASHMAC)
Mit diesem Befehl können Hash-Werte, MAC-Werte (Message
Authentication Code) nach bestimmten Algorithmen oder eine
Zufallszahl generiert werden.
Hash-Werte, auch Streuwerte genannt, erzeugen aus einer
üblicherweise großen Quellmenge eine wesentlich kleinere Zielmenge.
Ein Hash-Wert kann auch als Fingerabdruck bezeichnet werden. Ein
guter Hash-Algorithmus zeichnet sich dadurch aus, dass bei Änderung
nur eines einzelnen Bits in der Quellmenge das Ergebnis einen
komplett anderen Hash-Wert ergibt.
Hash-Algorithmen sind darauf optimiert, sogenannte Kollisionen
zu vermeiden. Eine Kollision tritt dann auf, wenn zwei
verschiedenen Quelldaten derselbe Schlüssel zugeordnet wird. Da der
Hash-Wert in der Praxis meist kürzer als die originale Quellmenge
ist, sind solche Kollisionen prinzipiell unvermeidlich, deshalb
gibt es Verfahren zur Kollisionserkennung.
Bei einer Hash-Funktion geht es meistens darum, zu einer Eingabe
beliebiger Länge (zum Beispiel ein Text) eine kurze, möglichst
eindeutige Identifikation fester Länge (den Hash-Wert des Textes)
zu finden.
Das ist etwa dann sinnvoll, wenn man zwei große, ähnliche
Dateien vergleichen will: Anstatt die 25 Seiten eines Textes
durchzusehen, ob auch wirklich jeder Buchstabe gleich ist, ist
anhand der kurzen Hash-Werte der beiden Dokumente sofort zu sehen,
ob diese höchstwahrscheinlich gleich oder mit Sicherheit
verschieden sind.
Praktische Anwendung ist z.B. das Herunterladen einer Datei, zu
der der Autor den Hash-Wert angegeben hat: Um zu prüfen, ob es
Übertragungsfehler gegeben hat, braucht die Datei nicht etwa ein
zweites Mal komplett heruntergeladen werden, sondern es muss nur
der Hash-Wert gebildet und mit der Angabe des Autors verglichen
werden.
Hash-Werte sind immer Einweg-Operationen. Aus dem Hash-Wert
können die Ursprungsdaten nicht wiederhergestellt werden.
Cl-Var für OUTPUT (2000) (OUTPUT)
Gibt den Namen der CL-Variablen im Programm an, in der die
generierten Daten gestellt werden. Als Ergebnis kann ein Hash-Wert
oder eine Zufallszahl geliefert werden.
Dies ist ein erforderlicher Parameter.
- Zeichenwert
- Im Rückgabewert können alle 256 Hexwerte vorkommen. Je nach
gewählten Algorithmus variiert die Länge des Rückgabewertes.
Eingabelänge (INPLEN)
Die Eingabelänge bestimmt, wieviele Zeichen des Parameters INPUT
verarbeitet werden sollen.
Dies ist ein erforderlicher Parameter.
- Zahl
- Wert zwischen 1 und 2000 angeben.
Algorithmus (ALGORITHM)
Hier wird angegeben, nach welchem Verfahren oder Algorithmus ein
Hash-Wert generiert werden soll. Die Länge des generierten Wertes
ist vom jeweiligen Algorithmus abhängig.
Dies ist ein erforderlicher Parameter.
- *MD5
- Die Erstellung des Hash-Wertes erfolgt nach dem Message Digest
Algorithmus 5 (MD5). Der Rückgabewert besteht immer aus 128 Bits
(16 Zeichen) und kann sämtliche Hexzeichen von x'00' bis x'FF'
beinhalten.
- *SHA1
- Die Erstellung des Hash-Wertes erfolgt nach dem Secure Hash
Algorithmus (SHA-1). Der Rückgabewert besteht immer aus 160 Bits
(20 Zeichen) und kann sämtliche Hexzeichen von x'00' bis x'FF'
beinhalten.
- *AES128
- Die Erstellung des MAC-Wertes erfolgt nach dem Advanced
Encryption Standard (AES) Algorithmus mit 128 Bit. Die Eingabelänge
muß mindestens 16 oder ein Vielfaches von 16 betragen. Der
Rückgabewert besteht immer aus 128 Bits (16 Zeichen) und kann
sämtliche Hexzeichen von x'00' bis x'FF' beinhalten.
Für diesen Algorithmus ist das kostenlose Lizenzprogramm
5722-AC3 (Crypto Access Provider 128-bit) bzw. ab i5/OS V5R4M0 das
kostenlose Lizenzprogramm 5722-SS1 Option 35 (CCA Cryptographic
Service Provider) erforderlich.
- *AES192
- Die Erstellung des MAC-Wertes erfolgt nach dem Advanced
Encryption Standard (AES) Algorithmus mit 192 Bit. Die Eingabelänge
muß mindestens 24 oder ein Vielfaches von 24 betragen. Der
Rückgabewert besteht immer aus 192 Bits (24 Zeichen) und kann
sämtliche Hexzeichen von x'00' bis x'FF' beinhalten.
Für diesen Algorithmus ist das kostenlose Lizenzprogramm
5722-AC3 (Crypto Access Provider 128-bit) bzw. ab i5/OS V5R4M0 das
kostenlose Lizenzprogramm 5722-SS1 Option 35 (CCA Cryptographic
Service Provider) erforderlich.
- *AES256
- Die Erstellung des MAC-Wertes erfolgt nach dem Advanced
Encryption Standard (AES) Algorithmus mit 256 Bit. Die Eingabelänge
muß mindestens 32 oder ein Vielfaches von 32 betragen. Der
Rückgabewert besteht immer aus 256 Bits (32 Zeichen) und kann
sämtliche Hexzeichen von x'00' bis x'FF' beinhalten.
Für diesen Algorithmus ist das kostenlose Lizenzprogramm
5722-AC3 (Crypto Access Provider 128-bit) bzw. ab i5/OS V5R4M0 das
kostenlose Lizenzprogramm 5722-SS1 Option 35 (CCA Cryptographic
Service Provider) erforderlich.
- *RANDOM
- Mit dieser Funktion kann eine Zufallszahl generiert werden. Ein
Eingabewert ist für die Generierung nicht erforderlich, jedoch
bestimmt die Eingabelänge die Länge der Zufallszahl. Die erstellte
Zufallszahl kann aus bis zu 2000 Zeichen bestehen.
Für diese Funktion ist das kostenlose Lizenzprogramm 5722-AC3
(Crypto Access Provider 128-bit) bzw. ab i5/OS V5R4M0 das
kostenlose Lizenzprogramm 5722-SS1 Option 35 (CCA Cryptographic
Service Provider) erforderlich.
Kennwort (PWD)
Für alle Algorithmen kann für die Generierung des
Hash-/MAC-Wertes ein Kennwort angegeben werden.
- *NONE
- Es wird kein Kennwort für die Generierung des Wertes verwendet.
Das Ergebnis ist ein Hash-Wert.
- Kennwort
- Kennwort angeben, welches für die Generierung des Wertes
verwendet werden soll. Das Kennwort kann aus allen Hexzeichen von
x'00' bis x'FF' bestehen. Das Ergebnis ist ein MAC-Wert.
Beispiele für HASHMAC
Beispiel 1: Generierung Hash-Wert nach MD5
Mit folgender Anweisung wird aus dem Feldinhalt von
&PASSWORD ein Hash-Wert nach MD5 generiert.
HASHMAC INPUT(&PASSWORD) OUTPUT(&HASHVAL)
INPLEN(10) ALGORITHM(*MD5)
Beispiel 2: Generierung Hash-Wert mit CALL
Mit folgendem Programmaufruf wird aus dem Feldinhalt von
&MESSAGE ein MAC-Wert nach AES 256 Bit generiert. Dabei wird
für die Generierung das Kennwort F25lj verwendet.
CALL PGM(HASHMAC) PARM(&MESSAGE &HASHVAL 128 '*AES256' 'F25lj')
Fehlernachrichten
Unbekannt