![]() | Patrick's Programming Library Version 6.4.21 - Dokumentation |
Klasse zum Erstellen von Hashes nach verschiedenen Algorithmen. Mehr ...
Öffentliche Typen | |
enum | Algorithm { Algo_CRC32, Algo_CRC32B, Algo_ADLER32, Algo_MD2, Algo_MD4, Algo_MD5, Algo_SHA1, Algo_SHA224, Algo_SHA256, Algo_SHA384, Algo_SHA512, Algo_WHIRLPOOL, Algo_HAVAL256, Algo_HAVAL224, Algo_HAVAL192, Algo_HAVAL160, Algo_HAVAL128, Algo_RIPEMD128, Algo_RIPEMD160, Algo_RIPEMD256, Algo_RIPEMD320, Algo_TIGER128, Algo_TIGER160, Algo_TIGER192, Algo_GOST, Algo_SNEFRU128, Algo_SNEFRU256 } |
Unterstütze Algorithmen. Mehr ... | |
enum | Bits { Bits_Default, Bits_128, Bits_160, Bits_192, Bits_224, Bits_256, Bits_320, Bits_384, Bits_512 } |
Öffentliche Methoden | |
CMHash () | |
Konstruktor der Klasse. Mehr ... | |
CMHash (Algorithm method) | |
Konstruktor mit Initialisierung des Algorithmus. Mehr ... | |
~CMHash () | |
Destruktor der Klasse. Mehr ... | |
int | AddData (const void *data, size_t size) |
Daten zur Berechnung hinzufügen. Mehr ... | |
int | AddData (const CVar &data) |
Daten-Objekt zur Berechnung hinzufügen. Mehr ... | |
int | AddData (CFileObject &file) |
Hash-Wert einer geöffneten Datei berechnen. Mehr ... | |
int | AddFile (const char *filename) |
Hash-Wert einer Datei berechnen. Mehr ... | |
int | GetBlockSize () const |
Größe des gewählten Hash-Algorithmus. Mehr ... | |
int | GetResult (CVar &result) |
Ergebnis auslesen. Mehr ... | |
int | Init (Algorithm method) |
Auswahl des gewünschten Hash-Algorithmus. Mehr ... | |
void | Reset () |
Interne Datenstrukturen zurücksetzen. Mehr ... | |
Öffentliche, statische Methoden | |
static int | ADLER32 (const CVar &data, CVar &result) |
ADLER32 berechnen. Mehr ... | |
static int | ADLER32 (const CVar &data) |
ADLER32 berechnen. Mehr ... | |
static int | CRC32 (const CVar &data, CVar &result) |
CRC32-Summe berechnen, wie sie im Netzwerkbereich verwendet wird. Mehr ... | |
static int | CRC32 (const CVar &data) |
CRC32-Summe berechnen, wie sie im Netzwerkbereich verwendet wird. Mehr ... | |
static int | CRC32B (const CVar &data, CVar &result) |
CRC32-Summe berechnen, wie sie in ZIP-Programmen verwendet wird. Mehr ... | |
static int | CRC32B (const CVar &data) |
CRC32-Summe berechnen, wie sie in ZIP-Programmen verwendet wird. Mehr ... | |
static int | GOST (const CVar &data, CVar &result) |
GOST-Hash berechnen. Mehr ... | |
static int | Hash (const CVar &data, CVar &result, Algorithm algo) |
Hash-Wert mit einem beliebigen Algorithmus berechnen. Mehr ... | |
static int | Hash (const CVar &data, CVar &result, const CString &algo) |
Hash-Wert mit einem beliebigen Algorithmus berechnen. Mehr ... | |
static int | HAVAL (const CVar &data, CVar &result, Bits bits=Bits_Default) |
HAVAL-Hash berechnen. Mehr ... | |
static int | MD4 (const CVar &data, CVar &result) |
MD4-Hash berechnen. Mehr ... | |
static int | MD5 (const CVar &data, CVar &result) |
MD5-Hash berechnen. Mehr ... | |
static int | RIPEMD (const CVar &data, CVar &result, Bits bits=Bits_160) |
RIPEMD-Hash berechnen. Mehr ... | |
static int | SHA1 (const CVar &data, CVar &result) |
SHA1-Hash berechnen. Mehr ... | |
static int | SHA2 (const CVar &data, CVar &result, Bits bits=Bits_256) |
SHA2-Hash berechnen. Mehr ... | |
static int | SHA224 (const CVar &data, CVar &result) |
SHA224-Hash berechnen. Mehr ... | |
static int | SHA256 (const CVar &data, CVar &result) |
SHA256-Hash berechnen. Mehr ... | |
static int | SHA384 (const CVar &data, CVar &result) |
SHA384-Hash berechnen. Mehr ... | |
static int | SHA512 (const CVar &data, CVar &result) |
SHA512-Hash berechnen. Mehr ... | |
static int | SNEFRU (const CVar &data, CVar &result, Bits bits=Bits_160) |
SNEFRU-Hash berechnen. Mehr ... | |
static int | TIGER (const CVar &data, CVar &result, Bits bits=Bits_Default) |
TIGER-Hash berechnen. Mehr ... | |
static int | WHIRLPOOL (const CVar &data, CVar &result) |
WHIRLPOOL-Hash berechnen. Mehr ... | |
Private Attribute | |
Algorithm | algo |
int | blocksize |
ppluint64 | bytesHashed |
void * | handle |
patrick@server: ./ppltest d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
patrick@server: ./ppltest Die CRC32-Prüfsumme lautet: 1095738169 (0x414FA339)
patrick@server: ./ppltest 9e107d9d372bb6826bd81d3542a419d6
Die Klasse unterstützt folgende Algorithmen zu Erzeugen der Hashes:
Aufzählungswerte | |
---|---|
Algo_CRC32 |
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). |
Algo_CRC32B |
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. |
Algo_ADLER32 |
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. |
Algo_MD2 |
Message-Digest Algorithm 2 (MD2) ist eine von Ronald L. Rivest im Jahr 1988 veröffentlichte Hash-Funktion. Der Algorithmus wurde für 8-Bit Rechner optimiert. MD2 ist in RFC 1319 spezifiziert. Bereits 1997 wurden erste Kollisionsmöglichkeiten im Algorithmus entdeckt und seit 2004 gilt er offiziell als unsicher. |
Algo_MD4 |
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. |
Algo_MD5 |
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. |
Algo_SHA1 |
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 |
Algo_SHA224 |
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 |
Algo_SHA256 |
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 |
Algo_SHA384 |
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 |
Algo_SHA512 |
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 |
Algo_WHIRLPOOL |
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 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) ) |
Algo_HAVAL256 |
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 |
Algo_HAVAL224 |
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 |
Algo_HAVAL192 |
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 |
Algo_HAVAL160 |
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 |
Algo_HAVAL128 |
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 |
Algo_RIPEMD128 |
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. |
Algo_RIPEMD160 |
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. |
Algo_RIPEMD256 |
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. |
Algo_RIPEMD320 |
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. |
Algo_TIGER128 |
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 |
Algo_TIGER160 |
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 |
Algo_TIGER192 |
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 |
Algo_GOST |
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. |
Algo_SNEFRU128 |
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. |
Algo_SNEFRU256 |
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. |
enum ppl6::CMHash::Bits |
ppl6::CMHash::CMHash | ( | ) |
ppl6::CMHash::CMHash | ( | Algorithm | method | ) |
method | Der gewünschte Algorithmus (siehe CMHash::Algorithm) |
ppl6::CMHash::~CMHash | ( | ) |
int ppl6::CMHash::AddData | ( | const void * | data, |
size_t | size | ||
) |
data | Pointer auf den Speicherbereich mit den zu berechnenden Daten |
size | Größe des Speicherbereichs in Bytes |
int ppl6::CMHash::AddData | ( | const CVar & | data | ) |
data | Ein von CVar abgeleitetes Objekt. Derzeit werden CString, CWString und CBinary unterstützt. |
int ppl6::CMHash::AddData | ( | CFileObject & | file | ) |
file | Referenz auf ein von CFileObject abgeleitetes Objekt |
int ppl6::CMHash::AddFile | ( | const char * | filename | ) |
filename | Pointer auf den Dateinamen. Dieser muss mit einem 0-Byte abgeschlossen sein. |
int ppl6::CMHash::GetBlockSize | ( | ) | const |
int ppl6::CMHash::GetResult | ( | CVar & | result | ) |
result
gespeichert. Gleichzeitig werden die internen Datenstrukturen reinitialisiert, so dass ein weiterer Aufruf dieser Funktion fehlschlagen wird. Es kann jedoch sofort ein neuer Hash-Wert berechnet werden. result
Objekts ab. Handelt es sich um ein CBinary, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus. 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 verwendet werden.[out] | result | Ein von CVar abgeleitetes Objekt, in dem das Ergebnis abgelegt werden soll. Unterstützt werden CBinary, CString, CWString und CInt. Der vorherige Inhalt des Objekts wird überschrieben. |
int ppl6::CMHash::Init | ( | Algorithm | method | ) |
method | Der gewünschte Algorithmus (siehe CMHash::Algorithm). |
void ppl6::CMHash::Reset | ( | ) |
|
private |
|
private |
|
private |
|
private |