PPL7-Icon Patrick's Programming Library Version 7.0.0 - Dokumentation
Verschlüsselung und Hashes

Verschlüsselung und Hashes. Mehr ...

Ausführliche Beschreibung

Include:
#include <ppl7-crypto.h>
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 der Klassen ppl7::MHash und ppl7::MCrypt basieren auf den Bibliotheken libmhash und libmcrypt und sind daher nur verfügbar, wenn diese beim Kompilieren der PPL-Library eingebunden wurden. Die Klasse ppl7::Digest setzt auf OpenSSL auf und ist daher nur verfügbar, wenn diese beim Kompilieren der PPL-Library eingebunden wurde.

Klassen

class  ppl7::MCrypt
 Klasse zum Ver- und Entschlüsseln von Daten basierend auf MCrypt. Mehr ...
 
class  ppl7::MHash
 Klasse zum Erstellen von Hashes nach verschiedenen Algorithmen. Mehr ...
 

Funktionen

static int ppl7::MHash::adler32 (const Variant &data)
 Adler32-Summe berechnen. Mehr ...
 
static int ppl7::MHash::crc32 (const Variant &data)
 CRC32-Summe berechnen, wie sie im Netzwerkbereich verwendet wird. Mehr ...
 
static int ppl7::MHash::crc32b (const Variant &data)
 CRC32-Summe berechnen, wie sie im ZIP-Programmen verwendet wird. Mehr ...
 
static void ppl7::MCrypt::crypt (ByteArrayPtr &buffer, const Variant &key, Algorithm algo, Mode mode)
 Daten verschlüsseln. Mehr ...
 
static void ppl7::MCrypt::crypt (ByteArrayPtr &buffer, const Variant &key, const Variant &IV, Algorithm algo, Mode mode)
 Daten verschlüsseln. Mehr ...
 
static void ppl7::MCrypt::decrypt (ByteArrayPtr &buffer, const Variant &key, Algorithm algo, Mode mode)
 Daten entschlüsseln. Mehr ...
 
static void ppl7::MCrypt::decrypt (ByteArrayPtr &buffer, const Variant &key, const Variant &IV, Algorithm algo, Mode mode)
 Daten entschlüsseln. Mehr ...
 
static ByteArray ppl7::MHash::hash (const Variant &data, Algorithm algorithm)
 Hash-Wert mit einem beliebigen Algorithmus berechnen. Mehr ...
 
static ByteArray ppl7::MHash::hash (const Variant &data, const String &algorithm)
 Hash-Wert mit einem beliebigen Algorithmus berechnen. Mehr ...
 
static ByteArray ppl7::MHash::md4 (const Variant &data)
 MD4-Hash berechnen. Mehr ...
 
static ByteArray ppl7::MHash::md5 (const Variant &data)
 MD5-Hash berechnen. Mehr ...
 
static ByteArray ppl7::MHash::sha1 (const Variant &data)
 SHA1-Hash berechnen. Mehr ...
 
static ByteArray ppl7::MHash::sha2 (const Variant &data, Bits bits=Bits_256)
 SHA2-Hash berechnen. Mehr ...
 
static ByteArray ppl7::MHash::sha224 (const Variant &data)
 SHA224-Hash berechnen. Mehr ...
 
static ByteArray ppl7::MHash::sha256 (const Variant &data)
 SHA256-Hash berechnen. Mehr ...
 
static ByteArray ppl7::MHash::sha384 (const Variant &data)
 SHA384-Hash berechnen. Mehr ...
 
static ByteArray ppl7::MHash::sha512 (const Variant &data)
 SHA512-Hash berechnen. Mehr ...
 

Dokumentation der Funktionen

int ppl7::MHash::adler32 ( const Variant data)
static
Include:
#include <ppl7-crypto.h>
Beschreibung:
Mit dieser Funktion wird ein ADLER32-Prüfwert für die Daten data berechnet und das Ergebnis als 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 MHash::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
Prüfsumme als Integer
int ppl7::MHash::crc32 ( const Variant data)
static
Include:
#include <ppl7-crypto.h>
Beschreibung:
Mit dieser Funktion wird ein CRC32-Prüfwert für die Daten data berechnet und das Ergebnis als 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: MHash::Algo_CRC32 (wird im Netzwerkbereich verwendet) und MHash::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
Prüfsumme als Integer
int ppl7::MHash::crc32b ( const Variant data)
static
Include:
#include <ppl7-crypto.h>
Beschreibung:
Mit dieser Funktion wird ein CRC32-Prüfwert für die Daten data berechnet und das Ergebnis als 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: MHash::Algo_CRC32 (wird im Netzwerkbereich verwendet) und MHash::Algo_CRC32B (wird z.B. in ZIP Programmen verwendet). Dies ist auch der Algorithmus, der in ppl7::crc32 und ppl7::SocketMessage 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
Prüfsumme als Integer
void ppl7::MCrypt::crypt ( ByteArrayPtr buffer,
const Variant key,
Algorithm  algo,
Mode  mode 
)
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 MCrypt 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 MCrypt::Algo_TWOFISH (siehe MCrypt::Algorithm)
[in]modeOptionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist MCrypt::Mode_CFB (siehe MCrypt::Mode)
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
if (!ppl6::MCrypt::Crypt(bin,key,ppl6::MCrypt::Algo_TWOFISH,ppl6::MCrypt::Mode_CFB,r)) {
ppl6::PrintError();
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Verschlüsselung
// Daten entschlüsseln
if (!ppl6::MCrypt::Decrypt(bin,key,ppl6::MCrypt::Algo_TWOFISH,ppl6::MCrypt::Mode_CFB,r)) {
ppl6::PrintError();
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Entschlüsselung
void ppl7::MCrypt::crypt ( ByteArrayPtr buffer,
const Variant key,
const Variant IV,
Algorithm  algo,
Mode  mode 
)
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 MCrypt 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 MCrypt::Algo_TWOFISH (siehe MCrypt::Algorithm)
[in]modeOptionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist MCrypt::Mode_CFB (siehe MCrypt::Mode)
[in]IVInitialisierungsvektor (IV), den einige Verschlüsselungsalgorithmen benötigen (siehe dazu auch MCrypt::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
if (!ppl6::MCrypt::Crypt(bin,key,ppl6::MCrypt::Algo_TWOFISH,ppl6::MCrypt::Mode_CFB,r)) {
ppl6::PrintError();
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Verschlüsselung
// Daten entschlüsseln
if (!ppl6::MCrypt::Decrypt(bin,key,ppl6::MCrypt::Algo_TWOFISH,ppl6::MCrypt::Mode_CFB,r)) {
ppl6::PrintError();
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Entschlüsselung
void ppl7::MCrypt::decrypt ( ByteArrayPtr buffer,
const Variant key,
Algorithm  algo,
Mode  mode 
)
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 MCrypt 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 MCrypt::Algo_TWOFISH (siehe MCrypt::Algorithm)
[in]modeOptionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist MCrypt::Mode_CFB (siehe MCrypt::Mode)
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
if (!ppl6::MCrypt::Crypt(bin,key,ppl6::MCrypt::Algo_TWOFISH,ppl6::MCrypt::Mode_CFB,r)) {
ppl6::PrintError();
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Verschlüsselung
// Daten entschlüsseln
if (!ppl6::MCrypt::Decrypt(bin,key,ppl6::MCrypt::Algo_TWOFISH,ppl6::MCrypt::Mode_CFB,r)) {
ppl6::PrintError();
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Entschlüsselung
void ppl7::MCrypt::decrypt ( ByteArrayPtr buffer,
const Variant key,
const Variant IV,
Algorithm  algo,
Mode  mode 
)
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 MCrypt 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 MCrypt::Algo_TWOFISH (siehe MCrypt::Algorithm)
[in]modeOptionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist MCrypt::Mode_CFB (siehe MCrypt::Mode)
[in]IVInitialisierungsvektor (IV), den einige Verschlüsselungsalgorithmen benötigen (siehe dazu auch MCrypt::SetIV). Defaultmäßig wird ein statischer IV verwendet, der in der Library einkompiliert ist. Dies ist allerdings nicht besonders sicher.
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
if (!ppl6::MCrypt::Crypt(bin,key,ppl6::MCrypt::Algo_TWOFISH,ppl6::MCrypt::Mode_CFB,r)) {
ppl6::PrintError();
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Verschlüsselung
// Daten entschlüsseln
if (!ppl6::MCrypt::Decrypt(bin,key,ppl6::MCrypt::Algo_TWOFISH,ppl6::MCrypt::Mode_CFB,r)) {
ppl6::PrintError();
return;
}
bin.HexDump(); // Inhalt des Objekts nach der Entschlüsselung
ByteArray ppl7::MHash::hash ( const Variant data,
Algorithm  algorithm 
)
static
Include:
#include <ppl7-crypto.h>
Beschreibung:
Mit dieser Funktion wird ein Hash-Wert für die Daten data mit dem Algorithmus algorithm berechnet und das Ergebnis als ByteArray zurückgegeben.
Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein ByteArray, ByteArrayPtr, String oder WideString handeln.
[in]algorithmDer zu verwendende Algorithmus (siehe MHash::Algorithm)
Rückgabe
ByteArray mit dem Hashwert
Ausnahmebehandlung
UnsupportedFeatureExceptionMHash wird nicht unterstützt
InvalidAlgorithmExceptionAlgorithmus wird nicht unterstützt oder ist unbekannt
HashFailedExceptionBeim Hashen ist ein Fehler aufgetreten
UnsupportedDataTypeException
OutOfMemoryException
EmptyDataExceptionEs wurden noch keine Daten gehasht
UnsupportedDataTypeException
ByteArray ppl7::MHash::hash ( const Variant data,
const String algo 
)
static
Include:
#include <ppl7-crypto.h>
Beschreibung:
Mit dieser Funktion wird ein Hash-Wert für die Daten data mit dem Algorithmus algo berechnet und das Ergebnis als ByteArray zurückgegeben.
Parameter
[in]dataObjekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein ByteArray, ByteArrayPtr, String oder WideString handeln.
[in]algoDer zu verwendende Algorithmus als String
Rückgabe
ByteArray mit dem Hashwert
Ausnahmebehandlung
UnsupportedFeatureExceptionMHash wird nicht unterstützt
InvalidAlgorithmExceptionAlgorithmus wird nicht unterstützt oder ist unbekannt
HashFailedExceptionBeim Hashen ist ein Fehler aufgetreten
UnsupportedDataTypeException
OutOfMemoryException
EmptyDataExceptionEs wurden noch keine Daten gehasht
UnsupportedDataTypeException
ByteArray ppl7::MHash::md4 ( const Variant data)
static
Include:
#include <ppl7-crypto.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem MD4-Algorithmus für die Daten data berechnet und das Ergebnis binär als ByteArray 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
Rückgabe
Bei Erfolg liefert die Funktion ein ByteArray zurück, im Fehlerfall wird eine Exception geworfen.
ByteArray ppl7::MHash::md5 ( const Variant data)
static
Include:
#include <ppl7-crypto.h>
Beschreibung:
Mit dieser Funktion wird ein Hashwert nach dem MD5-Algorithmus für die Daten data berechnet und das Ergebnis binär als ByteArray 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
Rückgabe
Bei Erfolg liefert die Funktion ein ByteArray zurück, im Fehlerfall wird eine Exception geworfen.
ByteArray ppl7::MHash::sha1 ( const Variant data)
static
Include:
#include <ppl7-crypto.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 MHash::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.
ByteArray ppl7::MHash::sha2 ( const Variant data,
Bits  bits = Bits_256 
)
static
Include:
#include <ppl7-crypto.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 MHash::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.
ByteArray ppl7::MHash::sha224 ( const Variant data)
static
Include:
#include <ppl7-crypto.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 MHash::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.
ByteArray ppl7::MHash::sha256 ( const Variant data)
static
Include:
#include <ppl7-crypto.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 MHash::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.
ByteArray ppl7::MHash::sha384 ( const Variant data)
static
Include:
#include <ppl7-crypto.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 MHash::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.
ByteArray ppl7::MHash::sha512 ( const Variant data)
static
Include:
#include <ppl7-crypto.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 MHash::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.