QMessageAuthenticationCode Class
Die Klasse „QMessageAuthenticationCode“ bietet eine Möglichkeit, hashbasierte Nachrichtenauthentifizierungscodes zu generieren. Mehr...
| Header: | #include <QMessageAuthenticationCode> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
Hinweis: Alle Funktionen dieser Klasse sind reentrant.
Öffentliche Funktionen
| QMessageAuthenticationCode(QCryptographicHash::Algorithm method, QByteArrayView key = {}) | |
(since 6.6) | QMessageAuthenticationCode(QMessageAuthenticationCode &&other) |
| ~QMessageAuthenticationCode() | |
| void | addData(QByteArrayView data) |
| bool | addData(QIODevice *device) |
| void | addData(const char *data, qsizetype length) |
| void | reset() |
| QByteArray | result() const |
(since 6.6) QByteArrayView | resultView() const |
| void | setKey(QByteArrayView key) |
(since 6.6) void | swap(QMessageAuthenticationCode &other) |
(since 6.6) QMessageAuthenticationCode & | operator=(QMessageAuthenticationCode &&other) |
Statische öffentliche Mitglieder
| QByteArray | hash(QByteArrayView message, QByteArrayView key, QCryptographicHash::Algorithm method) |
(since 6.8) QByteArrayView | hashInto(QSpan<char> buffer, QByteArrayView message, QByteArrayView key, QCryptographicHash::Algorithm method) |
(since 6.8) QByteArrayView | hashInto(QSpan<char> buffer, QSpan<const QByteArrayView> messageParts, QByteArrayView key, QCryptographicHash::Algorithm method) |
(since 6.8) QByteArrayView | hashInto(QSpan<std::byte> buffer, QByteArrayView message, QByteArrayView key, QCryptographicHash::Algorithm method) |
(since 6.8) QByteArrayView | hashInto(QSpan<std::byte> buffer, QSpan<const QByteArrayView> messageParts, QByteArrayView key, QCryptographicHash::Algorithm method) |
(since 6.8) QByteArrayView | hashInto(QSpan<uchar> buffer, QByteArrayView message, QByteArrayView key, QCryptographicHash::Algorithm method) |
(since 6.8) QByteArrayView | hashInto(QSpan<uchar> buffer, QSpan<const QByteArrayView> messageParts, QByteArrayView key, QCryptographicHash::Algorithm method) |
Ausführliche Beschreibung
Verwenden Sie die Klasse „QMessageAuthenticationCode“, um hashbasierte Nachrichtenauthentifizierungscodes (HMACs) zu generieren. Die Klasse unterstützt alle kryptografischen Hash-Algorithmen aus „ QCryptographicHash “ (siehe auch QCryptographicHash::Algorithm).
Um einen Nachrichtenauthentifizierungscode zu generieren, übergeben Sie dem Konstruktor einen geeigneten Hash-Algorithmus und einen geheimen Schlüssel. Verarbeiten Sie anschließend die Nachrichtendaten, indem Sie die Funktion ` addData()` ein- oder mehrmals aufrufen. Nachdem die gesamte Nachricht verarbeitet wurde, rufen Sie den endgültigen Authentifizierungscode über die Funktion ` result()` ab:
QByteArray key = "key";
QByteArray message = "The quick brown fox jumps over the lazy dog";
...
QMessageAuthenticationCode code(QCryptographicHash::Sha256, key);
code.addData(message);
code.result().toHex(); // returns "f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8"In einfachen Fällen wie dem oben genannten können Sie auch die statische Funktion ` hash()` verwenden:
QMessageAuthenticationCode::hash(message, key, QCryptographicHash::Sha256).toHex();Hinweis: Die kryptografische Stärke des HMAC hängt von der Größe des geheimen Schlüssels und der Sicherheit der zugrunde liegenden Hash-Funktion ab.
Siehe auch QCryptographicHash und QCryptographicHash::Algorithm.
Dokumentation zu den Member-Funktionen
[explicit] QMessageAuthenticationCode::QMessageAuthenticationCode(QCryptographicHash::Algorithm method, QByteArrayView key = {})
Erstellt ein Objekt, mit dem sich anhand der Methode „ method “ und des Schlüssels „ key “ ein kryptografischer Hash aus Daten generieren lässt.
Hinweis: In Qt-Versionen vor 6.6 nahm diese Funktion ihre Argumente als ` QByteArray` entgegen, nicht als ` QByteArrayView`. Wenn Kompilierungsfehler auftreten, liegt das daran, dass Ihr Code Objekte übergibt, die implizit in ` QByteArray` konvertierbar sind, nicht jedoch in ` QByteArrayView`. Umschließen Sie das entsprechende Argument mit ` QByteArray{~~~} `, um den Typumwandlung explizit zu machen. Dies ist abwärtskompatibel mit älteren Qt-Versionen.
[noexcept, since 6.6] QMessageAuthenticationCode::QMessageAuthenticationCode(QMessageAuthenticationCode &&other)
Erstellt mittels „Move“ ein neues `QMessageAuthenticationCode`-Objekt aus ` other`.
Hinweis: Das Objekt „ other “, aus dem die Verschiebung erfolgt, befindet sich in einem teilweise initialisierten Zustand, in dem die einzigen zulässigen Operationen die Zerstörung und die Zuweisung eines neuen Objekts sind.
Diese Funktion wurde in Qt 6.6 eingeführt.
[noexcept] QMessageAuthenticationCode::~QMessageAuthenticationCode()
Löscht das Objekt.
[noexcept] void QMessageAuthenticationCode::addData(QByteArrayView data)
Fügt „ data “ zur Nachricht hinzu.
Hinweis: In Qt-Versionen vor 6.6 nahm diese Funktion ihre Argumente als ` QByteArray` entgegen, nicht als ` QByteArrayView`. Wenn Kompilierungsfehler auftreten, liegt das daran, dass Ihr Code Objekte übergibt, die implizit in ` QByteArray` konvertierbar sind, nicht jedoch in ` QByteArrayView`. Umhüllen Sie das entsprechende Argument mit ` QByteArray{~~~} `, um den Typumwandlung explizit zu machen. Dies ist abwärtskompatibel mit älteren Qt-Versionen.
Siehe auch resultView() und result().
bool QMessageAuthenticationCode::addData(QIODevice *device)
Liest die Daten aus der geöffneten Datei „ QIODevice “ ( device ), bis das Ende erreicht ist, und fügt sie der Nachricht hinzu. Gibt „ true “ zurück, wenn das Einlesen erfolgreich war.
Hinweis: „ device “ muss bereits geöffnet sein.
void QMessageAuthenticationCode::addData(const char *data, qsizetype length)
Fügt die ersten length Zeichen von data zur Nachricht hinzu.
Dies ist eine überladene Funktion.
[static] QByteArray QMessageAuthenticationCode::hash(QByteArrayView message, QByteArrayView key, QCryptographicHash::Algorithm method)
Gibt den Authentifizierungscode für die Nachricht message unter Verwendung des Schlüssels key und der Methode method zurück.
Hinweis: In Qt-Versionen vor 6.6 nahm diese Funktion ihre Argumente als ` QByteArray` entgegen, nicht als ` QByteArrayView`. Wenn Kompilierungsfehler auftreten, liegt das daran, dass Ihr Code Objekte übergibt, die implizit in ` QByteArray` konvertierbar sind, nicht jedoch in ` QByteArrayView`. Umschließen Sie das entsprechende Argument mit ` QByteArray{~~~} `, um den Typumwandlung explizit zu machen. Dies ist abwärtskompatibel mit älteren Qt-Versionen.
Siehe auch ` hashInto()`.
[static noexcept, since 6.8] QByteArrayView QMessageAuthenticationCode::hashInto(QSpan<char> buffer, QByteArrayView message, QByteArrayView key, QCryptographicHash::Algorithm method)
[static noexcept, since 6.8] QByteArrayView QMessageAuthenticationCode::hashInto(QSpan<char> buffer, QSpan<const QByteArrayView> messageParts, QByteArrayView key, QCryptographicHash::Algorithm method)
[static noexcept, since 6.8] QByteArrayView QMessageAuthenticationCode::hashInto(QSpan<std::byte> buffer, QByteArrayView message, QByteArrayView key, QCryptographicHash::Algorithm method)
[static noexcept, since 6.8] QByteArrayView QMessageAuthenticationCode::hashInto(QSpan<std::byte> buffer, QSpan<const QByteArrayView> messageParts, QByteArrayView key, QCryptographicHash::Algorithm method)
[static noexcept, since 6.8] QByteArrayView QMessageAuthenticationCode::hashInto(QSpan<uchar> buffer, QByteArrayView message, QByteArrayView key, QCryptographicHash::Algorithm method)
[static noexcept, since 6.8] QByteArrayView QMessageAuthenticationCode::hashInto(QSpan<uchar> buffer, QSpan<const QByteArrayView> messageParts, QByteArrayView key, QCryptographicHash::Algorithm method)
Gibt den Authentifizierungscode für die Nachricht zurück (message oder, bei den Überladungen von QSpan, die Verkettung von messageParts) unter Verwendung des Schlüssels key und der Methode method.
Der Rückgabewert ist ein Teilbereich von ` buffer`, es sei denn, ` buffer ` ist nicht groß genug; in diesem Fall wird ein `null`-Wert für ` QByteArrayView ` zurückgegeben.
Diese Funktionen wurden in Qt 6.8 eingeführt.
Siehe auch ` hash()`.
[noexcept] void QMessageAuthenticationCode::reset()
Setzt die Nachrichtendaten zurück. Der Aufruf dieser Funktion hat keine Auswirkungen auf den Schlüssel.
QByteArray QMessageAuthenticationCode::result() const
Gibt den endgültigen Authentifizierungscode zurück.
Siehe auch resultView() und QByteArray::toHex().
[noexcept, since 6.6] QByteArrayView QMessageAuthenticationCode::resultView() const
Gibt den endgültigen Hash-Wert zurück.
Beachten Sie, dass die zurückgegebene Ansicht nur so lange gültig bleibt, wie das Objekt „ QMessageAuthenticationCode “ nicht auf andere Weise verändert wird.
Diese Funktion wurde in Qt 6.6 eingeführt.
Siehe auch ` result()`.
[noexcept] void QMessageAuthenticationCode::setKey(QByteArrayView key)
Legt den geheimen Schlüssel „ key “ fest. Der Aufruf dieser Funktion setzt den Objektzustand automatisch zurück.
Um eine optimale Leistung zu erzielen, rufen Sie diese Funktion nur auf, um den aktiven Schlüssel zu ändern, nicht jedoch, um einen Anfangsschlüssel festzulegen, wie in
QMessageAuthenticationCode mac(method);
mac.setKey(key); // does extra work
use(mac);Übergeben Sie Anfangsschlüssel vorzugsweise als Konstruktorargument:
QMessageAuthenticationCode mac(method, key); // OK, optimal
use(mac);Sie können `std::optional` verwenden, um die Erstellung eines ` QMessageAuthenticationCode ` zu verzögern, bis Sie den Schlüssel kennen:
std::optional<QMessageAuthenticationCode> mac;
~~~
key = ~~~;
mac.emplace(method, key);
use(*mac);Hinweis: In Qt-Versionen vor 6.6 nahm diese Funktion ihre Argumente als ` QByteArray` entgegen, nicht als ` QByteArrayView`. Wenn Kompilierungsfehler auftreten, liegt das daran, dass Ihr Code Objekte übergibt, die implizit in ` QByteArray` konvertierbar sind, nicht jedoch in ` QByteArrayView`. Umschließen Sie das entsprechende Argument mit ` QByteArray{~~~} `, um den Typumwandlung explizit zu machen. Dies ist abwärtskompatibel mit älteren Qt-Versionen.
[noexcept, since 6.6] void QMessageAuthenticationCode::swap(QMessageAuthenticationCode &other)
Ersetzt diesen Nachrichtenauthentifizierungscode durch other. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.
Diese Funktion wurde in Qt 6.6 eingeführt.
[noexcept, since 6.6] QMessageAuthenticationCode &QMessageAuthenticationCode::operator=(QMessageAuthenticationCode &&other)
Weist „ other “ dieser „ QMessageAuthenticationCode “-Instanz zu.
Hinweis: Das verschobene Objekt other befindet sich in einem teilweise initialisierten Zustand, in dem die einzigen zulässigen Operationen die Zerstörung und die Zuweisung eines neuen Objekts sind.
Diese Funktion wurde in Qt 6.6 eingeführt.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.