QMessageAuthenticationCode Class

Die Klasse QMessageAuthenticationCode bietet eine Möglichkeit, Hash-basierte Nachrichten-Authentifizierungscodes zu erzeugen. Mehr...

Kopfzeile: #include <QMessageAuthenticationCode>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Hinweis: Alle Funktionen in 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)

Detaillierte Beschreibung

Verwenden Sie die Klasse QMessageAuthenticationCode, um hashbasierte Nachrichtenauthentifizierungscodes (HMACs) zu erzeugen. Die Klasse unterstützt alle kryptographischen Hash-Algorithmen von QCryptographicHash (siehe auch QCryptographicHash::Algorithm).

Um einen Nachrichtenauthentifizierungscode zu erzeugen, übergeben Sie einen geeigneten Hash-Algorithmus und einen geheimen Schlüssel an den Konstruktor. Verarbeiten Sie dann die Nachrichtendaten, indem Sie addData() ein oder mehrere Male aufrufen. Nachdem die gesamte Nachricht verarbeitet worden ist, erhalten Sie den endgültigen Authentifizierungscode über die Funktion result():

    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"

Für einfache Fälle wie oben 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 der Mitgliedsfunktionen

[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 (message oder, bei den QSpan Überladungen, die Verkettung von messageParts) unter Verwendung des Schlüssels key und der Methode method zurück.

Der Rückgabewert ist ein Teilbereich von buffer, es sei denn, buffer hat eine unzureichende Größe; in diesem Fall wird ein Nullwert QByteArrayView zurückgegeben.

Diese Funktion wurde in Qt 6.8 eingeführt.

Siehe auch hash().

[explicit] QMessageAuthenticationCode::QMessageAuthenticationCode(QCryptographicHash::Algorithm method, QByteArrayView key = {})

Konstruiert ein Objekt, das verwendet werden kann, um einen kryptographischen Hash aus Daten mit der Methode method und dem Schlüssel key zu erstellen.

Hinweis: In Qt-Versionen vor 6.6 nahm diese Funktion ihre Argumente als QByteArray und nicht als QByteArrayView entgegen. Wenn Sie Kompilierungsfehler feststellen, liegt das daran, dass Ihr Code Objekte übergibt, die implizit in QByteArray konvertierbar sind, aber nicht in QByteArrayView. Wickeln Sie das entsprechende Argument in QByteArray{~~~} ein, um den Cast explizit zu machen. Dies ist rückwärtskompatibel mit alten Qt-Versionen.

[noexcept, since 6.6] QMessageAuthenticationCode::QMessageAuthenticationCode(QMessageAuthenticationCode &&other)

Move-konstruiert einen neuen QMessageAuthenticationCode aus other.

Hinweis: Das verschobene Objekt other wird in einen teilweise gebildeten Zustand versetzt, in dem die einzigen gültigen Operationen die Zerstörung und die Zuweisung eines neuen Objekts sind.

Diese Funktion wurde in Qt 6.6 eingeführt.

[noexcept] QMessageAuthenticationCode::~QMessageAuthenticationCode()

Zerstört das Objekt.

[noexcept] void QMessageAuthenticationCode::addData(QByteArrayView data)

Fügt data zu der Nachricht hinzu.

Hinweis: In Qt-Versionen vor 6.6 nahm diese Funktion ihre Argumente als QByteArray und nicht als QByteArrayView entgegen. Wenn Sie Kompilierungsfehler feststellen, liegt das daran, dass Ihr Code Objekte übergibt, die implizit in QByteArray konvertierbar sind, aber nicht in QByteArrayView. Wickeln Sie das entsprechende Argument in QByteArray{~~~} ein, um den Cast explizit zu machen. Dies ist rückwärtskompatibel mit alten Qt-Versionen.

Siehe auch resultView() und result().

bool QMessageAuthenticationCode::addData(QIODevice *device)

Liest die Daten aus dem geöffneten QIODevice device bis zu dessen Ende und fügt sie der Nachricht hinzu. Gibt true zurück, wenn das Lesen erfolgreich war.

Hinweis: device muss bereits geöffnet sein.

void QMessageAuthenticationCode::addData(const char *data, qsizetype length)

Dies ist eine überladene Funktion.

Fügt die ersten length Zeichen von data zur Nachricht hinzu.

[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, nicht als QByteArrayView entgegen. Wenn Sie Kompilierungsfehler feststellen, liegt das daran, dass Ihr Code Objekte übergibt, die implizit in QByteArray konvertierbar sind, aber nicht in QByteArrayView. Wickeln Sie das entsprechende Argument in QByteArray{~~~} ein, um den Cast explizit zu machen. Dies ist rückwärtskompatibel mit alten Qt-Versionen.

Siehe auch hashInto().

[noexcept] void QMessageAuthenticationCode::reset()

Setzt die Nachrichtendaten zurück. Der Aufruf dieser Funktion hat keinen Einfluss 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 ist, wie das QMessageAuthenticationCode Objekt nicht anderweitig verändert wird.

Diese Funktion wurde in Qt 6.6 eingeführt.

Siehe auch result().

[noexcept] void QMessageAuthenticationCode::setKey(QByteArrayView key)

Setzt das Geheimnis key. Durch den Aufruf dieser Funktion wird der Objektstatus automatisch zurückgesetzt.

Um optimale Leistung zu erzielen, rufen Sie diese Funktion nur auf, um den aktiven Schlüssel zu ändern, nicht um einen Anfangsschlüssel zu setzen, wie in

QMessageAuthenticationCode mac(method);
mac.setKey(key); // does extra work
use(mac);

Ziehen Sie es vor, Anfangsschlüssel als Konstruktorargument zu übergeben:

QMessageAuthenticationCode mac(method, key); // OK, optimal
use(mac);

Sie können std::optional verwenden, um die Konstruktion einer 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 und nicht als QByteArrayView entgegen. Wenn Sie Kompilierungsfehler feststellen, liegt das daran, dass Ihr Code Objekte übergibt, die implizit in QByteArray konvertierbar sind, aber nicht in QByteArrayView. Wickeln Sie das entsprechende Argument in QByteArray{~~~} ein, um den Cast explizit zu machen. Dies ist rückwärtskompatibel mit alten Qt-Versionen.

[noexcept, since 6.6] void QMessageAuthenticationCode::swap(QMessageAuthenticationCode &other)

Tauscht diesen Nachrichten-Authentifizierungscode mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.

Diese Funktion wurde in Qt 6.6 eingeführt.

[noexcept, since 6.6] QMessageAuthenticationCode &QMessageAuthenticationCode::operator=(QMessageAuthenticationCode &&other)

Verschieben - weist other dieser QMessageAuthenticationCode Instanz zu.

Hinweis: Das verschobene Objekt other wird in einen teilweise gebildeten Zustand versetzt, in dem die einzigen gültigen Operationen die Zerstörung und die Zuweisung eines neuen Objekts sind.

Diese Funktion wurde in Qt 6.6 eingeführt.

© 2025 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.