|
| Patrick's Programming Library Version 7.0.0 - Dokumentation |
Verschlüsselung und Hashes. Mehr ...
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 ... | |
|
static |
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.
| [in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
|
static |
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).
| [in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
|
static |
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.
| [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 MCrypt::Algo_TWOFISH (siehe MCrypt::Algorithm) |
| [in] | mode | Optionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist MCrypt::Mode_CFB (siehe MCrypt::Mode) |
|
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 MCrypt::Algo_TWOFISH (siehe MCrypt::Algorithm) |
| [in] | mode | Optionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist MCrypt::Mode_CFB (siehe MCrypt::Mode) |
| [in] | IV | Initialisierungsvektor (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. |
|
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 MCrypt::Algo_TWOFISH (siehe MCrypt::Algorithm) |
| [in] | mode | Optionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist MCrypt::Mode_CFB (siehe MCrypt::Mode) |
|
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 MCrypt::Algo_TWOFISH (siehe MCrypt::Algorithm) |
| [in] | mode | Optionaler Parameter, der den zu verwendenden Verschlüsselungsmodus angibt. Default ist MCrypt::Mode_CFB (siehe MCrypt::Mode) |
| [in] | IV | Initialisierungsvektor (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. |
data mit dem Algorithmus algorithm berechnet und das Ergebnis als ByteArray zurückgegeben. | [in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein ByteArray, ByteArrayPtr, String oder WideString handeln. |
| [in] | algorithm | Der zu verwendende Algorithmus (siehe MHash::Algorithm) |
| UnsupportedFeatureException | MHash wird nicht unterstützt |
| InvalidAlgorithmException | Algorithmus wird nicht unterstützt oder ist unbekannt |
| HashFailedException | Beim Hashen ist ein Fehler aufgetreten |
| UnsupportedDataTypeException | |
| OutOfMemoryException | |
| EmptyDataException | Es wurden noch keine Daten gehasht |
| UnsupportedDataTypeException |
data mit dem Algorithmus algo berechnet und das Ergebnis als ByteArray zurückgegeben.| [in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein ByteArray, ByteArrayPtr, String oder WideString handeln. |
| [in] | algo | Der zu verwendende Algorithmus als String |
| UnsupportedFeatureException | MHash wird nicht unterstützt |
| InvalidAlgorithmException | Algorithmus wird nicht unterstützt oder ist unbekannt |
| HashFailedException | Beim Hashen ist ein Fehler aufgetreten |
| UnsupportedDataTypeException | |
| OutOfMemoryException | |
| EmptyDataException | Es wurden noch keine Daten gehasht |
| UnsupportedDataTypeException |
|
static |
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.
| [in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
|
static |
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.
| [in] | data | Objekt, dem die zu berechnenden Daten zu entnehmen sind. Dabei kann es sich um ein CBinary, CString oder CWString handeln |
|
static |
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 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
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 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
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 |
|
static |
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 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
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. |
|
static |
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 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
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. |
|
static |
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 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
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. |
|
static |
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 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
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. |