PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
Verschlüsselung und Hashes

Verschlüsselung und Hashes. Mehr ...

Ausführliche Beschreibung

Beschreibung:
Auf dieser Seite sind Klassen und Funktion zu finden, mit denen Daten nach verschiedenen kryptographischen Algorithmen verschlüsselt und entschlüsselt werden können, sowie Klassen und Funktionen zum Berechnen von Hash-Werten oder Prüfsummen nach verschiedenen Algorithmen.
Die Funktionen beruhen zumeist auf den Bibliotheken libmhash und libmcrypt und sind daher nur verfügbar, wenn diese beim Kompilieren der PPL-Library eingebunden wurden.
Seit
Die Klassen und Funktionen wurden mit Version 6.3.0 eingeführt.

Klassen

class  ppl6::CMCrypt
 Klasse zum Ver- und Entschlüsseln von Daten. Mehr ...
 
class  ppl6::CMHash
 Klasse zum Erstellen von Hashes nach verschiedenen Algorithmen. Mehr ...
 

Funktionen

static int ppl6::CMHash::ADLER32 (const CVar &data, CVar &result)
 ADLER32 berechnen. Mehr ...
 
static int ppl6::CMHash::ADLER32 (const CVar &data)
 ADLER32 berechnen. Mehr ...
 
static int ppl6::CMHash::CRC32 (const CVar &data, CVar &result)
 CRC32-Summe berechnen, wie sie im Netzwerkbereich verwendet wird. Mehr ...
 
static int ppl6::CMHash::CRC32 (const CVar &data)
 CRC32-Summe berechnen, wie sie im Netzwerkbereich verwendet wird. Mehr ...
 
static int ppl6::CMHash::CRC32B (const CVar &data, CVar &result)
 CRC32-Summe berechnen, wie sie in ZIP-Programmen verwendet wird. Mehr ...
 
static int ppl6::CMHash::CRC32B (const CVar &data)
 CRC32-Summe berechnen, wie sie in ZIP-Programmen verwendet wird. Mehr ...
 
static int ppl6::CMCrypt::Crypt (CBinary &buffer, const CVar &key, Algorithm algo=CMCrypt::Algo_TWOFISH, Mode mode=CMCrypt::Mode_CFB, const CVar &IV=CBinary())
 Daten verschlüsseln. Mehr ...
 
static int ppl6::CMCrypt::Crypt (CBinary &buffer, const char *key, Algorithm algo=CMCrypt::Algo_TWOFISH, Mode mode=CMCrypt::Mode_CFB, const CVar &IV=CBinary())
 Daten verschlüsseln. Mehr ...
 
static int ppl6::CMCrypt::Decrypt (CBinary &buffer, const CVar &key, Algorithm algo=CMCrypt::Algo_TWOFISH, Mode mode=CMCrypt::Mode_CFB, const CVar &IV=CBinary())
 Daten entschlüsseln. Mehr ...
 
static int ppl6::CMCrypt::Decrypt (CBinary &buffer, const char *key, Algorithm algo=CMCrypt::Algo_TWOFISH, Mode mode=CMCrypt::Mode_CFB, const CVar &IV=CBinary())
 Daten entschlüsseln. Mehr ...
 
static int ppl6::CMHash::GOST (const CVar &data, CVar &result)
 GOST-Hash berechnen. Mehr ...
 
static int ppl6::CMHash::Hash (const CVar &data, CVar &result, Algorithm algo)
 Hash-Wert mit einem beliebigen Algorithmus berechnen. Mehr ...
 
static int ppl6::CMHash::Hash (const CVar &data, CVar &result, const CString &algo)
 Hash-Wert mit einem beliebigen Algorithmus berechnen. Mehr ...
 
static int ppl6::CMHash::HAVAL (const CVar &data, CVar &result, Bits bits=Bits_Default)
 HAVAL-Hash berechnen. Mehr ...
 
static int ppl6::CMHash::MD4 (const CVar &data, CVar &result)
 MD4-Hash berechnen. Mehr ...
 
static int ppl6::CMHash::MD5 (const CVar &data, CVar &result)
 MD5-Hash berechnen. Mehr ...
 
static int ppl6::CMHash::RIPEMD (const CVar &data, CVar &result, Bits bits=Bits_160)
 RIPEMD-Hash berechnen. Mehr ...
 
static int ppl6::CMHash::SHA1 (const CVar &data, CVar &result)
 SHA1-Hash berechnen. Mehr ...
 
static int ppl6::CMHash::SHA2 (const CVar &data, CVar &result, Bits bits=Bits_256)
 SHA2-Hash berechnen. Mehr ...
 
static int ppl6::CMHash::SHA224 (const CVar &data, CVar &result)
 SHA224-Hash berechnen. Mehr ...
 
static int ppl6::CMHash::SHA256 (const CVar &data, CVar &result)
 SHA256-Hash berechnen. Mehr ...
 
static int ppl6::CMHash::SHA384 (const CVar &data, CVar &result)
 SHA384-Hash berechnen. Mehr ...
 
static int ppl6::CMHash::SHA512 (const CVar &data, CVar &result)
 SHA512-Hash berechnen. Mehr ...
 
static int ppl6::CMHash::SNEFRU (const CVar &data, CVar &result, Bits bits=Bits_160)
 SNEFRU-Hash berechnen. Mehr ...
 
static int ppl6::CMHash::TIGER (const CVar &data, CVar &result, Bits bits=Bits_Default)
 TIGER-Hash berechnen. Mehr ...
 
static int ppl6::CMHash::WHIRLPOOL (const CVar &data, CVar &result)
 WHIRLPOOL-Hash berechnen. Mehr ...
 

Dokumentation der Funktionen

int ppl6::CMHash::ADLER32 ( const CVar data,
CVar result 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein ADLER32-Prüfwert für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben. Bei diesem Algorithmus kann auch CInt als result verwendet werden.

Adler-32 ist ein einfacher, von Mark Adler entwickelter Prüfsummenalgorithmus. Er wird unter anderem von der zlib-Bibliothek benutzt, um (zufällige Übertragungs-)Fehler im komprimierten Datenstrom zu erkennen. In RFC 1950 wird der Algorithmus genau beschrieben.

Der Adler-32-Algorithmus ist einfacher und lässt sich schneller berechnen als die bekannte Zyklische Redundanzprüfung (siehe CMHash::Algo_CRC32), bietet aber auch weniger Sicherheit beim Erkennen von zufälligen Bitfehlern.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Hier kann es sich um ein CBinary, CString, CWString oder CInt handeln.
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::ADLER32 ( const CVar data)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein ADLER32-Prüfwert für die Daten data berechnet und das Ergebnis als 32-Bit Integer zurückgegeben.

Adler-32 ist ein einfacher, von Mark Adler entwickelter Prüfsummenalgorithmus. Er wird unter anderem von der zlib-Bibliothek benutzt, um (zufällige Übertragungs-)Fehler im komprimierten Datenstrom zu erkennen. In RFC 1950 wird der Algorithmus genau beschrieben.

Der Adler-32-Algorithmus ist einfacher und lässt sich schneller berechnen als die bekannte Zyklische Redundanzprüfung (siehe CMHash::Algo_CRC32), bietet aber auch weniger Sicherheit beim Erkennen von zufälligen Bitfehlern.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
Rückgabe
Bei Erfolg liefert die Funktion die Prüfsumme zurück, im Fehlerfall 0.
int ppl6::CMHash::CRC32 ( const CVar data,
CVar result 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein CRC32-Prüfwert für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben. Bei diesem Algorithmus kann auch CInt als result verwendet werden.

Die zyklische Redundanzprüfung (engl. cyclic redundancy check, daher meist CRC) ist ein Verfahren (bzw. eine bestimmte Klasse von Verfahren) aus der Informationstechnik zur Bestimmung eines Prüfwerts für Daten (z. B. Datenübertragung in Rechnernetzen oder eine Datei), um Fehler bei der Übertragung oder Duplizierung von Daten erkennen zu können. Diese Klasse unterstützt zwei Varianten des Algorithmus: CMHash::Algo_CRC32 (wird im Netzwerkbereich verwendet) und CMHash::Algo_CRC32B (wird z.B. in ZIP Programmen verwendet).

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Hier kann es sich um ein CBinary, CString, CWString oder CInt handeln.
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::CRC32 ( const CVar data)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein CRC32-Prüfwert für die Daten data berechnet und das Ergebnis als 32-Bit Integer zurückgegeben.

Die zyklische Redundanzprüfung (engl. cyclic redundancy check, daher meist CRC) ist ein Verfahren (bzw. eine bestimmte Klasse von Verfahren) aus der Informationstechnik zur Bestimmung eines Prüfwerts für Daten (z. B. Datenübertragung in Rechnernetzen oder eine Datei), um Fehler bei der Übertragung oder Duplizierung von Daten erkennen zu können. Diese Klasse unterstützt zwei Varianten des Algorithmus: CMHash::Algo_CRC32 (wird im Netzwerkbereich verwendet) und CMHash::Algo_CRC32B (wird z.B. in ZIP Programmen verwendet).

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
Rückgabe
Bei Erfolg liefert die Funktion die Prüfsumme zurück, im Fehlerfall 0.
int ppl6::CMHash::CRC32B ( const CVar data,
CVar result 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein CRC32-Prüfwert für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben. Bei diesem Algorithmus kann auch CInt als result verwendet werden.

Die zyklische Redundanzprüfung (engl. cyclic redundancy check, daher meist CRC) ist ein Verfahren (bzw. eine bestimmte Klasse von Verfahren) aus der Informationstechnik zur Bestimmung eines Prüfwerts für Daten (z. B. Datenübertragung in Rechnernetzen oder eine Datei), um Fehler bei der Übertragung oder Duplizierung von Daten erkennen zu können. Diese Klasse unterstützt zwei Varianten des Algorithmus: CMHash::Algo_CRC32 (wird im Netzwerkbereich verwendet) und CMHash::Algo_CRC32B (wird z.B. in ZIP Programmen verwendet). Dies ist auch der Algorithmus, der in ppl6::crc32 und ppl6::CSocketMessage verwendet wird.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Hier kann es sich um ein CBinary, CString, CWString oder CInt handeln.
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::CRC32B ( const CVar data)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein CRC32-Prüfwert für die Daten data berechnet und das Ergebnis als 32-Bit Integer zurückgegeben.

Die zyklische Redundanzprüfung (engl. cyclic redundancy check, daher meist CRC) ist ein Verfahren (bzw. eine bestimmte Klasse von Verfahren) aus der Informationstechnik zur Bestimmung eines Prüfwerts für Daten (z. B. Datenübertragung in Rechnernetzen oder eine Datei), um Fehler bei der Übertragung oder Duplizierung von Daten erkennen zu können. Diese Klasse unterstützt zwei Varianten des Algorithmus: CMHash::Algo_CRC32 (wird im Netzwerkbereich verwendet) und CMHash::Algo_CRC32B (wird z.B. in ZIP Programmen verwendet). Dies ist auch der Algorithmus, der in ppl6::crc32 und ppl6::CSocketMessage verwendet wird.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
Rückgabe
Bei Erfolg liefert die Funktion die Prüfsumme zurück, im Fehlerfall 0.
int ppl6::CMCrypt::Crypt ( CBinary buffer,
const CVar key,
Algorithm  algo = CMCrypt::Algo_TWOFISH,
Mode  mode = CMCrypt::Mode_CFB,
const CVar IV = CBinary() 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser statischen Funktion können die Daten eines CBinary-Objekts verschlüsselt werden, ohne dass dafür eine Instanz von CMCrypt erstellt werden muss.
Parameter
[in,out]bufferDas CBinary-Objekt, mit den zu verschlüsselnden Daten. Der Inhalt des Objekts wird durch die Funktion mit den verschlüsselten Daten überschrieben
[in]keyDer zu verwendende Schlüssel. Dieser kann aus Text in einem CString oder CWString bestehen, eine als const char* übergebenen Text mit abschließendem 0-Byte, aber auch aus binären Daten in einem CBinary Objekt
[in]algoOptionaler Parameter, der den zu verwendenden Algorithmus angibt. Default ist CMCrypt::Algo_TWOFISH (siehe CMCrypt::Algorithm)
[in]modeOptionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist CMCrypt::Mode_CFB (siehe CMCrypt::Mode)
[in]IVOptionaler Parameter auf den Initialisierungsvektor (IV), den einige Verschlüsselungsalgorithmen benötigen (siehe dazu auch CMCrypt::SetIV). Defaultmäßig wird ein statischer IV verwendet, der in der Library einkompiliert ist. Dies ist allerdings nicht besonders sicher.
Rückgabe
Bei Erfolg gibt die Funktion 1 zurück, im Fehlerfall 0.
Beispiel:
Hier ein Beispiel, wie mit den statischen Funktionen Daten zunächst verschlüsselt und dann wieder entschlüsselt werden:
ppl6::CBinary bin="Hallo Welt"; // Das zu verschlüsselnde Objekt
ppl6::CBinary r=ppl6::Random(32); // Ein paar Zufallsdaten für den IV
ppl6::CString key="mein schlüssel"; // Der Schlüssel
bin.HexDump(); // Inhalt des Objekts vor der Verschlüsselung
// Daten verschlüsseln
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Verschlüsselung
// Daten entschlüsseln
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Entschlüsselung
int ppl6::CMCrypt::Crypt ( CBinary buffer,
const char *  key,
Algorithm  algo = CMCrypt::Algo_TWOFISH,
Mode  mode = CMCrypt::Mode_CFB,
const CVar IV = CBinary() 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser statischen Funktion können die Daten eines CBinary-Objekts verschlüsselt werden, ohne dass dafür eine Instanz von CMCrypt erstellt werden muss.
Parameter
[in,out]bufferDas CBinary-Objekt, mit den zu verschlüsselnden Daten. Der Inhalt des Objekts wird durch die Funktion mit den verschlüsselten Daten überschrieben
[in]keyDer zu verwendende Schlüssel. Dieser kann aus Text in einem CString oder CWString bestehen, eine als const char* übergebenen Text mit abschließendem 0-Byte, aber auch aus binären Daten in einem CBinary Objekt
[in]algoOptionaler Parameter, der den zu verwendenden Algorithmus angibt. Default ist CMCrypt::Algo_TWOFISH (siehe CMCrypt::Algorithm)
[in]modeOptionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist CMCrypt::Mode_CFB (siehe CMCrypt::Mode)
[in]IVOptionaler Parameter auf den Initialisierungsvektor (IV), den einige Verschlüsselungsalgorithmen benötigen (siehe dazu auch CMCrypt::SetIV). Defaultmäßig wird ein statischer IV verwendet, der in der Library einkompiliert ist. Dies ist allerdings nicht besonders sicher.
Rückgabe
Bei Erfolg gibt die Funktion 1 zurück, im Fehlerfall 0.
Beispiel:
Hier ein Beispiel, wie mit den statischen Funktionen Daten zunächst verschlüsselt und dann wieder entschlüsselt werden:
ppl6::CBinary bin="Hallo Welt"; // Das zu verschlüsselnde Objekt
ppl6::CBinary r=ppl6::Random(32); // Ein paar Zufallsdaten für den IV
ppl6::CString key="mein schlüssel"; // Der Schlüssel
bin.HexDump(); // Inhalt des Objekts vor der Verschlüsselung
// Daten verschlüsseln
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Verschlüsselung
// Daten entschlüsseln
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Entschlüsselung
int ppl6::CMCrypt::Decrypt ( CBinary buffer,
const CVar key,
Algorithm  algo = CMCrypt::Algo_TWOFISH,
Mode  mode = CMCrypt::Mode_CFB,
const CVar IV = CBinary() 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser statischen Funktion können die verschlüsselten Daten eines CBinary-Objekts wieder entschlüsselt werden, ohne dass dafür eine Instanz von CMCrypt erstellt werden muss.
Parameter
[in,out]bufferDas CBinary-Objekt, mit den verschlüsselten Daten. Der Inhalt des Objekts wird durch die Funktion mit den entschlüsselten Daten überschrieben
[in]keyDer zu verwendende Schlüssel. Dieser kann aus Text in einem CString oder CWString bestehen, eine als const char* übergebenen Text mit abschließendem 0-Byte, aber auch aus binären Daten in einem CBinary Objekt
[in]algoOptionaler Parameter, der den zu verwendenden Algorithmus angibt. Default ist CMCrypt::Algo_TWOFISH (siehe CMCrypt::Algorithm)
[in]modeOptionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist CMCrypt::Mode_CFB (siehe CMCrypt::Mode)
[in]IVOptionaler Parameter auf den Initialisierungsvektor (IV), den einige Verschlüsselungsalgorithmen benötigen (siehe dazu auch CMCrypt::SetIV). Defaultmäßig wird ein statischer IV verwendet, der in der Library einkompiliert ist. Dies ist allerdings nicht besonders sicher.
Rückgabe
Bei Erfolg gibt die Funktion 1 zurück, im Fehlerfall 0.
Beispiel:
Hier ein Beispiel, wie mit den statischen Funktionen Daten zunächst verschlüsselt und dann wieder entschlüsselt werden:
ppl6::CBinary bin="Hallo Welt"; // Das zu verschlüsselnde Objekt
ppl6::CBinary r=ppl6::Random(32); // Ein paar Zufallsdaten für den IV
ppl6::CString key="mein schlüssel"; // Der Schlüssel
bin.HexDump(); // Inhalt des Objekts vor der Verschlüsselung
// Daten verschlüsseln
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Verschlüsselung
// Daten entschlüsseln
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Entschlüsselung
int ppl6::CMCrypt::Decrypt ( CBinary buffer,
const char *  key,
Algorithm  algo = CMCrypt::Algo_TWOFISH,
Mode  mode = CMCrypt::Mode_CFB,
const CVar IV = CBinary() 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser statischen Funktion können die verschlüsselten Daten eines CBinary-Objekts wieder entschlüsselt werden, ohne dass dafür eine Instanz von CMCrypt erstellt werden muss.
Parameter
[in,out]bufferDas CBinary-Objekt, mit den verschlüsselten Daten. Der Inhalt des Objekts wird durch die Funktion mit den entschlüsselten Daten überschrieben
[in]keyDer zu verwendende Schlüssel. Dieser kann aus Text in einem CString oder CWString bestehen, eine als const char* übergebenen Text mit abschließendem 0-Byte, aber auch aus binären Daten in einem CBinary Objekt
[in]algoOptionaler Parameter, der den zu verwendenden Algorithmus angibt. Default ist CMCrypt::Algo_TWOFISH (siehe CMCrypt::Algorithm)
[in]modeOptionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist CMCrypt::Mode_CFB (siehe CMCrypt::Mode)
[in]IVOptionaler Parameter auf den Initialisierungsvektor (IV), den einige Verschlüsselungsalgorithmen benötigen (siehe dazu auch CMCrypt::SetIV). Defaultmäßig wird ein statischer IV verwendet, der in der Library einkompiliert ist. Dies ist allerdings nicht besonders sicher.
Rückgabe
Bei Erfolg gibt die Funktion 1 zurück, im Fehlerfall 0.
Beispiel:
Hier ein Beispiel, wie mit den statischen Funktionen Daten zunächst verschlüsselt und dann wieder entschlüsselt werden:
ppl6::CBinary bin="Hallo Welt"; // Das zu verschlüsselnde Objekt
ppl6::CBinary r=ppl6::Random(32); // Ein paar Zufallsdaten für den IV
ppl6::CString key="mein schlüssel"; // Der Schlüssel
bin.HexDump(); // Inhalt des Objekts vor der Verschlüsselung
// Daten verschlüsseln
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Verschlüsselung
// Daten entschlüsseln
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Entschlüsselung
int ppl6::CMHash::GOST ( const CVar data,
CVar result 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem GOST-Algorithmus für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben.

GOST ist ein in den 1970er Jahren von der Sowjetische bzw. Russischen Regierung entwickelter Hash Algorithmus, definiert im Standard "GOST 28147-89". Er galt zunächst als "Top Secret", wurde aber nach dem Ende der UdSSR im Jahr 1990 für die Öffentlichkeit freigegeben. Er war als alternative zum amerikanischen DES Algorithmus entwickelt worden, weshalb er diesem sehr ähnlich ist.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln.
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::Hash ( const CVar data,
CVar result,
Algorithm  algo 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hash-Wert für die Daten data mit dem Algorithmus algo berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben. Bei den Algorithmen, die einen 32-Bit Wert zurückliefern (z.B. Algo_CRC32), kann auch CInt übergeben werden.
Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln, bei Algorithmen, die einen 32-Bit-Wert zurückgeben (z.B. Algo_CRC32) auch CInt.
[in]algoDer zu verwendende Algorithmus (siehe CMHash::Algorithm)
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::Hash ( const CVar data,
CVar result,
const CString algo 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hash-Wert für die Daten data mit dem Algorithmus algo berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben. Bei den Algorithmen, die einen 32-Bit Wert zurückliefern (z.B. Algo_CRC32), kann auch CInt übergeben werden.
Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln, bei Algorithmen, die einen 32-Bit-Wert zurückgeben (z.B. Algo_CRC32) auch CInt.
[in]algoDer zu verwendende Algorithmus als String
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::HAVAL ( const CVar data,
CVar result,
Bits  bits = Bits_Default 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem HAVAL-Algorithmus mit einer Bittiefe von bits für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben.

HAVAL ist eine kryptologische Hash-Funktion. Im Gegensatz zu MD5 ist es mit HAVAL, wie mit anderen moderneren Algorithmen, möglich, Hashes variabler Länge zu erzeugen, vor allem von 128 Bit, 160 Bit, 192 Bit, 224 Bit und 256 Bit. HAVAL erlaubt außerdem eine variable Anzahl von Runden (3, 4, oder 5). HAVAL wurde von Yuliang Zheng, Josef Pieprzyk, und Jennifer Seberry im Jahr 1992 erfunden. Die CMHash-Klasse unterstützt alle genannten Hash-Längen: Algo_HAVAL256, Algo_HAVAL224, Algo_HAVAL192, Algo_HAVAL160 and Algo_HAVAL128

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln.
[in]bitsDie gewünschte Bittiefe für die Berechnung. Möglich sind: Bits_128, Bits_160, Bits_192, Bits_224 und Bits_256
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.

HAVAL ist eine kryptologische Hash-Funktion. Im Gegensatz zu MD5 ist es mit HAVAL, wie mit anderen moderneren Algorithmen, möglich, Hashes variabler Länge zu erzeugen, vor allem von 128 Bit, 160 Bit, 192 Bit, 224 Bit und 256 Bit. HAVAL erlaubt außerdem eine variable Anzahl von Runden (3, 4, oder 5). HAVAL wurde von Yuliang Zheng, Josef Pieprzyk, und Jennifer Seberry im Jahr 1992 erfunden. Die CMHash-Klasse unterstützt alle genannten Hash-Längen: Algo_HAVAL256, Algo_HAVAL224, Algo_HAVAL192, Algo_HAVAL160 and Algo_HAVAL128

Parameter
data
result
bits
Rückgabe
int ppl6::CMHash::MD4 ( const CVar data,
CVar result 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem MD4-Algorithmus für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben.

MD4 (engl. Message-Digest Algorithm 4) wurde 1990 von Ronald L. Rivest veröffentlicht. Der MD4 Hash-Algorithmus wurde mit dem Anspruch entwickelt, auf 32 Bit-Rechnern besonders schnell zu laufen und gleichzeitig in der Implementierung einfach zu sein. Dabei sollten natürlich die grundlegenden Anforderungen an Hash-Funktionen erhalten bleiben. MD4 erzeugt einen Hashwert mit einer Länge von 128 Bit.

Trotz aller Sorgfalt im Design zeigte sich bald, dass das Verfahren unsicher ist. Als besonders problematisch stellte sich die mangelnde Kollisionsbeständigkeit heraus. Im Cryptobytes Journal der Firma RSA wurde eine Methode veröffentlicht, welche innerhalb einer Stunde zwei bis auf ein Zeichen identische Nachrichten erzeugen konnte, die denselben Hashwert ergaben. Rivest selbst bestätigte die Unsicherheit im RFC 1321, so dass selbst RSA vom Einsatz dieses Message-Digest abrät. MD4 wurde als Public Domain lizenziert, worauf wohl zurückzuführen ist, dass das verwendete Prinzip zur Basis weiterer Hash-Funktionen geworden ist.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln.
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::MD5 ( const CVar data,
CVar result 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem MD5-Algorithmus für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben.

MD5 (Message-Digest Algorithm 5) ist eine weit verbreitete kryptographische Hashfunktion, die einen 128-Bit-Hashwert erzeugt. MD5 wurde 1991 von Ronald L. Rivest entwickelt. Die errechneten MD5-Summen (kurz md5sum) werden zum Beispiel zur Integritätsprüfung von Dateien eingesetzt. Inzwischen ist es möglich anhand der Quelldaten Kollisionen zu finden, daher gilt MD5 inzwischen nicht mehr als 100% sicher. Ist nur der Hash-Wert bekannt, ist es nach wie vor schwierig.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln.
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::RIPEMD ( const CVar data,
CVar result,
Bits  bits = Bits_160 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem RIPEMD-Algorithmus mit einer Bittiefe von bits für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben.

RIPEMD-160 ist eine kryptologische Hash-Funktion und wurde von Hans Dobbertin, Antoon Bosselaers und Bart Preneel in Europa entwickelt und 1996 erstmals publiziert. Es handelt sich dabei um eine verbesserte Version von RIPEMD, welcher wiederum auf den Designprinzipien von MD4 basiert und in Hinsicht auf seine Stärke und Performance dem populäreren SHA-1 gleicht.

Es existieren auch 128-, 256- und 320-Bit-Versionen dieses Algorithmus (Algo_RIPEMD128, Algo_RIPEMD256, Algo_RIPEMD320). Die 128-Bit-Version war ursprünglich als Ersatz für den RIPEMD gedacht, der ebenfalls 128 Bit stark war, aber eine fragwürdige Sicherheit bot. Die 256- und 320-Bit-Versionen reduzieren lediglich die Wahrscheinlichkeit von Hash-Wert-Kollisionen, bieten aber keine höhere Sicherheit als RIPEMD-128 oder RIPEMD-160.

Da die Entwicklung von RIPEMD-160 offener war als die von SHA-1, ist es wahrscheinlicher, dass dieser Algorithmus weniger Sicherheitslücken aufweist. Da er jedoch weniger populär ist, haben weniger Kryptologen versucht, Schwächen zu finden, was wiederum die Wahrscheinlichkeit für unentdeckte Sicherheitslücken steigen lässt.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln.
[in]bitsDie gewünschte Bittiefe für die Berechnung. Möglich sind: Bits_128, Bits_160, Bits_256 und Bits_320
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::SHA1 ( const CVar data,
CVar result 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem SHA1-Algorithmus für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben.

SHA1 wurde vom Amerikanischen NIST (National Institute of Standards and Technology) zusammen mit der NSA (National Security Agency) 1995 entwickelt und hjat einen Hash-Wert von 160 Bit Länge für beliebige digitale Daten von maximal $ 2^{64}−1$ Bit (≈ 2 Exbibyte) Länge. Der Algorithmus ähnelt im Aufbau dem von Ronald L. Rivest entwickelten MD4. Im Sommer 2006 wurde eine wesentliche Schwäche dieses Algorithmus entdeckt und publik gemacht. Grundsätzlich sollte SHA-1 daher nicht mehr in neuen Entwicklungen als sicherer Hash-Algorithmus vorgesehen werden.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln.
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::SHA2 ( const CVar data,
CVar result,
Bits  bits = Bits_256 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem SHA-2-Algorithmus mit einer Bittiefe von bits für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben.

Das NIST (National Institute of Standards and Technology) hat im August 2002 drei weitere Varianten des Algorithmus veröffentlicht, die größere Hash-Werte als SHA1 erzeugen. Es handelt sich dabei um den SHA-256, SHA-384 und SHA-512 wobei die angefügte Zahl jeweils die Länge des Hash-Werts (in Bit) angibt. Mit SHA-384 und SHA-512 können (theoretisch) Daten bis zu einer Größe von $ 2^{128} $ Bit verarbeitet werden. In der Praxis sind Dateien mit mehr als $ 2^{64} $ Bit jedoch unrealistisch. Im Februar 2004 wurde eine weitere Version, SHA-224, veröffentlicht. Die 4 Varianten werden zusammenfassend als SHA-2 bezeichnet.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln.
[in]bitsDie gewünschte Bittiefe für die Berechnung. Möglich sind: Bits_224, Bits_256, Bits_384 und Bits_512
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::SHA224 ( const CVar data,
CVar result 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem SHA224-Algorithmus für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben.

Das NIST (National Institute of Standards and Technology) hat im August 2002 drei weitere Varianten des Algorithmus veröffentlicht, die größere Hash-Werte als SHA1 erzeugen. Es handelt sich dabei um den SHA-256, SHA-384 und SHA-512 wobei die angefügte Zahl jeweils die Länge des Hash-Werts (in Bit) angibt. Mit SHA-384 und SHA-512 können (theoretisch) Daten bis zu einer Größe von $ 2^{128} $ Bit verarbeitet werden. In der Praxis sind Dateien mit mehr als $ 2^{64} $ Bit jedoch unrealistisch. Im Februar 2004 wurde eine weitere Version, SHA-224, veröffentlicht. Die 4 Varianten werden zusammenfassend als SHA-2 bezeichnet.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln.
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::SHA256 ( const CVar data,
CVar result 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem SHA256-Algorithmus für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben.

Das NIST (National Institute of Standards and Technology) hat im August 2002 drei weitere Varianten des Algorithmus veröffentlicht, die größere Hash-Werte als SHA1 erzeugen. Es handelt sich dabei um den SHA-256, SHA-384 und SHA-512 wobei die angefügte Zahl jeweils die Länge des Hash-Werts (in Bit) angibt. Mit SHA-384 und SHA-512 können (theoretisch) Daten bis zu einer Größe von $ 2^{128} $ Bit verarbeitet werden. In der Praxis sind Dateien mit mehr als $ 2^{64} $ Bit jedoch unrealistisch. Im Februar 2004 wurde eine weitere Version, SHA-224, veröffentlicht. Die 4 Varianten werden zusammenfassend als SHA-2 bezeichnet.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln.
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::SHA384 ( const CVar data,
CVar result 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem SHA384-Algorithmus für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben.

Das NIST (National Institute of Standards and Technology) hat im August 2002 drei weitere Varianten des Algorithmus veröffentlicht, die größere Hash-Werte als SHA1 erzeugen. Es handelt sich dabei um den SHA-256, SHA-384 und SHA-512 wobei die angefügte Zahl jeweils die Länge des Hash-Werts (in Bit) angibt. Mit SHA-384 und SHA-512 können (theoretisch) Daten bis zu einer Größe von $ 2^{128} $ Bit verarbeitet werden. In der Praxis sind Dateien mit mehr als $ 2^{64} $ Bit jedoch unrealistisch. Im Februar 2004 wurde eine weitere Version, SHA-224, veröffentlicht. Die 4 Varianten werden zusammenfassend als SHA-2 bezeichnet.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln.
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::SHA512 ( const CVar data,
CVar result 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem SHA512-Algorithmus für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben.

Das NIST (National Institute of Standards and Technology) hat im August 2002 drei weitere Varianten des Algorithmus veröffentlicht, die größere Hash-Werte als SHA1 erzeugen. Es handelt sich dabei um den SHA-256, SHA-384 und SHA-512 wobei die angefügte Zahl jeweils die Länge des Hash-Werts (in Bit) angibt. Mit SHA-384 und SHA-512 können (theoretisch) Daten bis zu einer Größe von $ 2^{128} $ Bit verarbeitet werden. In der Praxis sind Dateien mit mehr als $ 2^{64} $ Bit jedoch unrealistisch. Im Februar 2004 wurde eine weitere Version, SHA-224, veröffentlicht. Die 4 Varianten werden zusammenfassend als SHA-2 bezeichnet.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln.
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::SNEFRU ( const CVar data,
CVar result,
Bits  bits = Bits_160 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem SNEFRU-Algorithmus mit einer Bittiefe von bits für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben.

Snefru (benannt nach dem ägyptischen Pharao Sneferu) ist eine von Ralph Merkle entwickelte kryptologische Hash-Funktion, die für beliebig lange Nachrichten einen Hash-Wert von 128 bzw. 256 Bit Länge berechnet. Eli Biham und Adi Shamir konnten mit Hilfe der differentiellen Kryptoanalyse die Unsicherheit des ursprünglichen Designs von Snefru zeigen, in dem sie Nachrichtenpaare mit gleichem Hash-Wert innerhalb von Minuten fanden.

Das Design wurde daraufhin so geändert, dass die Zahl der Wiederholungen des Hauptdurchlaufs des Algorithmus erhöht wurde. Aus Sicherheitsgründen wird der Einsatz von Snefru mit acht Durchläufen empfohlen. Allerdings ist der Algorithmus dann wesentlich langsamer als andere gängige Hash-Verfahren.

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln.
[in]bitsDie gewünschte Bittiefe für die Berechnung. Möglich sind: Bits_128 und Bits_256
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::TIGER ( const CVar data,
CVar result,
Bits  bits = Bits_Default 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem TIGER-Algorithmus mit einer Bittiefe von bits für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben.

Tiger ist eine schneller kryptografische Hashfunktion die von Ross Anderson und Eli Biham im Jahr 1996 entwickelt wurde. Der von Tiger erzeugte Hashwert kann Längen von 128, 160 oder 192 Bit haben. Der Tiger-Algorithmus ist nicht patentiert. Die CMHash-Klasse unterstützt alle drei Bittiefen: Algo_TIGER128, Algo_TIGER160, Algo_TIGER192

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln.
[in]bitsDie gewünschte Bittiefe für die Berechnung. Möglich sind: Bits_128, Bits_160 und Bits_192
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.
int ppl6::CMHash::WHIRLPOOL ( const CVar data,
CVar result 
)
static
Include:
#include <ppl6-crypt.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem WHIRLPOOL-Algorithmus für die Daten data berechnet und das Ergebnis in result gespeichert.
Handelt es sich bei result um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus (siehe CMHash::GetBlockSize). Wird CString oder CWString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben.

WHIRLPOOL ist eine kryptologische Hash-Funktion, die von Vincent Rijmen und Paulo S. L. M. Barreto entworfen wurde. Sie wurde nach der Whirlpool-Galaxie im Sternbild der Jagdhunde benannt. Whirlpool funktioniert mit Dateien bis zu $ 2^{256}$ Bit Größe und gibt einen Hash-Wert von 512 Bit aus. Bislang sind keine Schwächen des Algorithmus bekannt, was allerdings relativiert werden muss, da der Algorithmus noch sehr jung ist und bislang wenig untersucht wurde. Die Autoren haben erklärt, dass Whirlpool nicht patentiert ist und es nie sein wird. Whirlpool darf kostenlos zu jedem Zweck verwendet werden.

Whirlpool gehört zu den vom Projekt NESSIE empfohlenen kryptografischen Algorithmen und wurde von der ISO mit ISO/IEC 10118-3:2004 standardisiert. (Quelle: http://de.wikipedia.org/wiki/Whirlpool_(Algorithmus) )

Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln
[out]resultObjekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln.
Rückgabe
Bei Erfolg liefert die Funktion 1 zurück, im Fehlerfall 0.