|
| Patrick's Programming Library Version 7.0.0 - 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 | |
| MHash () | |
| Konstruktor der Klasse. Mehr ... | |
| MHash (Algorithm algorithm) | |
| Konstruktor mit Initialisierung des Algorithmus. Mehr ... | |
| ~MHash () | |
| Destruktor der Klasse. Mehr ... | |
| void | addData (const void *data, size_t size) |
| Daten zur Berechnung hinzufügen. Mehr ... | |
| void | addData (const Variant &data) |
| Daten-Objekt zur Berechnung hinzufügen. Mehr ... | |
| void | addData (FileObject &file) |
| Inhalt eines File-Objects zur Berechnung hinzufügen. Mehr ... | |
| void | addFile (const String &filename) |
| Inhalt einer Datei zur Berechnung hinzufügen. Mehr ... | |
| int | getBlockSize () const |
| Größe des gewählten Hash-Algorithmus. Mehr ... | |
| ByteArray | getDigest () |
| Ergebnis auslesen. Mehr ... | |
| int | getInt () |
| Ergebnis einer CRC32-Berechnung oder Adler32-Berechnung. Mehr ... | |
| void | reset () |
| Interne Datenstrukturen zurücksetzen. Mehr ... | |
| void | saveDigest (ByteArray &result) |
| Ergebnis speichern. Mehr ... | |
| void | saveDigest (String &result) |
| void | saveDigest (WideString &result) |
| void | setAlgorithm (Algorithm algorithm) |
| Auswahl des gewünschten Hash-Algorithmus. Mehr ... | |
Öffentliche, statische Methoden | |
| static int | adler32 (const Variant &data) |
| Adler32-Summe berechnen. Mehr ... | |
| static int | crc32 (const Variant &data) |
| CRC32-Summe berechnen, wie sie im Netzwerkbereich verwendet wird. Mehr ... | |
| static int | crc32b (const Variant &data) |
| CRC32-Summe berechnen, wie sie im ZIP-Programmen verwendet wird. Mehr ... | |
| static Algorithm | getAlgorithmFromName (const String &name) |
| Wandelt den übergebenen String in einen Algorithmus um. Mehr ... | |
| static ByteArray | hash (const Variant &data, Algorithm algorithm) |
| Hash-Wert mit einem beliebigen Algorithmus berechnen. Mehr ... | |
| static ByteArray | hash (const Variant &data, const String &algorithm) |
| Hash-Wert mit einem beliebigen Algorithmus berechnen. Mehr ... | |
| static ByteArray | md4 (const Variant &data) |
| MD4-Hash berechnen. Mehr ... | |
| static ByteArray | md5 (const Variant &data) |
| MD5-Hash berechnen. Mehr ... | |
| static ByteArray | sha1 (const Variant &data) |
| SHA1-Hash berechnen. Mehr ... | |
| static ByteArray | sha2 (const Variant &data, Bits bits=Bits_256) |
| SHA2-Hash berechnen. Mehr ... | |
| static ByteArray | sha224 (const Variant &data) |
| SHA224-Hash berechnen. Mehr ... | |
| static ByteArray | sha256 (const Variant &data) |
| SHA256-Hash berechnen. Mehr ... | |
| static ByteArray | sha384 (const Variant &data) |
| SHA384-Hash berechnen. Mehr ... | |
| static ByteArray | sha512 (const Variant &data) |
| SHA512-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
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: MHash::Algo_CRC32 (wird im Netzwerkbereich verwendet) und MHash::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: 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. |
| 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 MHash::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 MHash-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 MHash-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 MHash-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 MHash-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 MHash-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 MHash-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 MHash-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 MHash-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 ppl7::MHash::Bits |
| ppl7::MHash::MHash | ( | ) |
| ppl7::MHash::MHash | ( | Algorithm | algorithm | ) |
| algorithm | Der gewünschte Algorithmus (siehe MHash::Algorithm) |
| UnsupportedFeatureException | MHash wird nicht unterstützt |
| InvalidAlgorithmException | Algorithmus wird nicht unterstützt oder ist unbekannt |
| ppl7::MHash::~MHash | ( | ) |
| void ppl7::MHash::addData | ( | const void * | data, |
| size_t | size | ||
| ) |
| data | Pointer auf den Speicherbereich mit den zu berechnenden Daten |
| size | Größe des Speicherbereichs in Bytes |
| UnsupportedFeatureException | |
| NoAlgorithmSpecifiedException | |
| HashFailedException | Das Hashen der Daten ist fehlgeschlagen |
| void ppl7::MHash::addData | ( | const Variant & | data | ) |
| data | Ein von Variant abgeleitetes Objekt. Derzeit werden String, WideString, ByteArray und ByteArrayPtr unterstützt. |
| UnsupportedFeatureException | |
| NoAlgorithmSpecifiedException | |
| HashFailedException | Das Hashen der Daten ist fehlgeschlagen |
| UnsupportedDataTypeException |
| void ppl7::MHash::addData | ( | FileObject & | file | ) |
| file | Referenz auf ein von FileObject abgeleitetes Objekt |
| UnsupportedFeatureException | |
| NoAlgorithmSpecifiedException | |
| HashFailedException | Das Hashen der Daten ist fehlgeschlagen |
| IOException | Fehler beim Einlesen der Datei |
| void ppl7::MHash::addFile | ( | const String & | filename | ) |
| filename | String mit dem Dateinamen. |
| UnsupportedFeatureException | |
| NoAlgorithmSpecifiedException | |
| HashFailedException | Das Hashen der Daten ist fehlgeschlagen |
| IOException | Datei nicht vorhanden oder Fehler beim Einlesen |
|
static |
name bekannt, wird dessen Id zurückgegeben.| InvalidAlgorithmException | Algorithmus wird nicht unterstützt oder ist unbekannt |
| int ppl7::MHash::getBlockSize | ( | ) | const |
| UnsupportedFeatureException | MHash wird nicht unterstützt |
| NoAlgorithmSpecifiedException | Es wurde noch kein Algorithmus ausgewählt |
| ByteArray ppl7::MHash::getDigest | ( | ) |
| UnsupportedFeatureException | |
| NoAlgorithmSpecifiedException | |
| EmptyDataException | Es wurden noch keine Daten gehasht |
| OutOfMemoryException | |
| UnsupportedDataTypeException |
| int ppl7::MHash::getInt | ( | ) |
| UnsupportedFeatureException | |
| NoAlgorithmSpecifiedException | |
| EmptyDataException | Es wurden noch keine Daten gehasht |
| OutOfMemoryException | |
| UnsupportedDataTypeException |
| void ppl7::MHash::reset | ( | ) |
| UnsupportedFeatureException | MHash wird nicht unterstützt |
| InvalidAlgorithmException | Algorithmus wird nicht unterstützt oder ist unbekannt |
| void ppl7::MHash::saveDigest | ( | ByteArray & | 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 ByteArray, wird das Ergebnis im Binärformat übergeben und hat exakt die Länge des Algorithmus. Wird String oder WideString verwendet, wird das Ergebnis als Hexadezimalwerte in lesbarer Form zurückgegeben. | [out] | result | Ein von Variant abgeleitetes Objekt, in dem das Ergebnis abgelegt werden soll. Unterstützt werden ByteArray, String und WideString. Der vorherige Inhalt des Objekts wird überschrieben. |
| UnsupportedFeatureException | |
| NoAlgorithmSpecifiedException | |
| EmptyDataException | Es wurden noch keine Daten gehasht |
| OutOfMemoryException | |
| UnsupportedDataTypeException |
| void ppl7::MHash::saveDigest | ( | String & | result | ) |
| void ppl7::MHash::saveDigest | ( | WideString & | result | ) |
| void ppl7::MHash::setAlgorithm | ( | Algorithm | algorithm | ) |
| algorithm | Der gewünschte Algorithmus (siehe MHash::Algorithm). |
| UnsupportedFeatureException | MHash wird nicht unterstützt |
| InvalidAlgorithmException | Algorithmus wird nicht unterstützt oder ist unbekannt |
|
private |
|
private |
|
private |
|
private |