![]() | Patrick's Programming Library Version 6.4.21 - Dokumentation |
Verschlüsselung und Hashes. Mehr ...
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 ... | |
data
berechnet und das Ergebnis in result
gespeichert. 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.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Hier kann es sich um ein CBinary, CString, CWString oder CInt handeln. |
|
static |
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.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
data
berechnet und das Ergebnis in result
gespeichert. 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).
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Hier kann es sich um ein CBinary, CString, CWString oder CInt handeln. |
|
static |
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).
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
data
berechnet und das Ergebnis in result
gespeichert. 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.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Hier kann es sich um ein CBinary, CString, CWString oder CInt handeln. |
|
static |
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.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
|
static |
[in,out] | buffer | Das CBinary-Objekt, mit den zu verschlüsselnden Daten. Der Inhalt des Objekts wird durch die Funktion mit den verschlüsselten Daten überschrieben |
[in] | key | Der 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] | algo | Optionaler Parameter, der den zu verwendenden Algorithmus angibt. Default ist CMCrypt::Algo_TWOFISH (siehe CMCrypt::Algorithm) |
[in] | mode | Optionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist CMCrypt::Mode_CFB (siehe CMCrypt::Mode) |
[in] | IV | Optionaler 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. |
|
static |
[in,out] | buffer | Das CBinary-Objekt, mit den zu verschlüsselnden Daten. Der Inhalt des Objekts wird durch die Funktion mit den verschlüsselten Daten überschrieben |
[in] | key | Der 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] | algo | Optionaler Parameter, der den zu verwendenden Algorithmus angibt. Default ist CMCrypt::Algo_TWOFISH (siehe CMCrypt::Algorithm) |
[in] | mode | Optionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist CMCrypt::Mode_CFB (siehe CMCrypt::Mode) |
[in] | IV | Optionaler 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. |
|
static |
[in,out] | buffer | Das CBinary-Objekt, mit den verschlüsselten Daten. Der Inhalt des Objekts wird durch die Funktion mit den entschlüsselten Daten überschrieben |
[in] | key | Der 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] | algo | Optionaler Parameter, der den zu verwendenden Algorithmus angibt. Default ist CMCrypt::Algo_TWOFISH (siehe CMCrypt::Algorithm) |
[in] | mode | Optionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist CMCrypt::Mode_CFB (siehe CMCrypt::Mode) |
[in] | IV | Optionaler 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. |
|
static |
[in,out] | buffer | Das CBinary-Objekt, mit den verschlüsselten Daten. Der Inhalt des Objekts wird durch die Funktion mit den entschlüsselten Daten überschrieben |
[in] | key | Der 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] | algo | Optionaler Parameter, der den zu verwendenden Algorithmus angibt. Default ist CMCrypt::Algo_TWOFISH (siehe CMCrypt::Algorithm) |
[in] | mode | Optionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist CMCrypt::Mode_CFB (siehe CMCrypt::Mode) |
[in] | IV | Optionaler 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. |
data
berechnet und das Ergebnis in result
gespeichert. 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.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln. |
data
mit dem Algorithmus algo
berechnet und das Ergebnis in result
gespeichert. 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.[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, 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] | algo | Der zu verwendende Algorithmus (siehe CMHash::Algorithm) |
data
mit dem Algorithmus algo
berechnet und das Ergebnis in result
gespeichert. 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.[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, 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] | algo | Der zu verwendende Algorithmus als String |
|
static |
bits
für die Daten data
berechnet und das Ergebnis in result
gespeichert. 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
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln. |
[in] | bits | Die gewünschte Bittiefe für die Berechnung. Möglich sind: Bits_128, Bits_160, Bits_192, Bits_224 und Bits_256 |
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
data | |
result | |
bits |
data
berechnet und das Ergebnis in result
gespeichert. 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.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln. |
data
berechnet und das Ergebnis in result
gespeichert. 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.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln. |
bits
für die Daten data
berechnet und das Ergebnis in result
gespeichert. 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.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln. |
[in] | bits | Die gewünschte Bittiefe für die Berechnung. Möglich sind: Bits_128, Bits_160, Bits_256 und Bits_320 |
data
berechnet und das Ergebnis in result
gespeichert. 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 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.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln. |
bits
für die Daten data
berechnet und das Ergebnis in result
gespeichert. 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 Bit verarbeitet werden. In der Praxis sind Dateien mit mehr als
Bit jedoch unrealistisch. Im Februar 2004 wurde eine weitere Version, SHA-224, veröffentlicht. Die 4 Varianten werden zusammenfassend als SHA-2 bezeichnet.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln. |
[in] | bits | Die gewünschte Bittiefe für die Berechnung. Möglich sind: Bits_224, Bits_256, Bits_384 und Bits_512 |
data
berechnet und das Ergebnis in result
gespeichert. 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 Bit verarbeitet werden. In der Praxis sind Dateien mit mehr als
Bit jedoch unrealistisch. Im Februar 2004 wurde eine weitere Version, SHA-224, veröffentlicht. Die 4 Varianten werden zusammenfassend als SHA-2 bezeichnet.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln. |
data
berechnet und das Ergebnis in result
gespeichert. 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 Bit verarbeitet werden. In der Praxis sind Dateien mit mehr als
Bit jedoch unrealistisch. Im Februar 2004 wurde eine weitere Version, SHA-224, veröffentlicht. Die 4 Varianten werden zusammenfassend als SHA-2 bezeichnet.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln. |
data
berechnet und das Ergebnis in result
gespeichert. 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 Bit verarbeitet werden. In der Praxis sind Dateien mit mehr als
Bit jedoch unrealistisch. Im Februar 2004 wurde eine weitere Version, SHA-224, veröffentlicht. Die 4 Varianten werden zusammenfassend als SHA-2 bezeichnet.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln. |
data
berechnet und das Ergebnis in result
gespeichert. 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 Bit verarbeitet werden. In der Praxis sind Dateien mit mehr als
Bit jedoch unrealistisch. Im Februar 2004 wurde eine weitere Version, SHA-224, veröffentlicht. Die 4 Varianten werden zusammenfassend als SHA-2 bezeichnet.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln. |
bits
für die Daten data
berechnet und das Ergebnis in result
gespeichert. 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.
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln. |
[in] | bits | Die gewünschte Bittiefe für die Berechnung. Möglich sind: Bits_128 und Bits_256 |
|
static |
bits
für die Daten data
berechnet und das Ergebnis in result
gespeichert. 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
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln. |
[in] | bits | Die gewünschte Bittiefe für die Berechnung. Möglich sind: Bits_128, Bits_160 und Bits_192 |
data
berechnet und das Ergebnis in result
gespeichert. 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 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) )
[in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
[out] | result | Objekt, in dem das Ergebnis gespeichert werden soll. Auch hier kann es sich um ein CBinary, CString oder CWString handeln. |