Sur cette page

QMessageAuthenticationCode Class

La classe QMessageAuthenticationCode permet de générer des codes d'authentification de messages basés sur le hachage. Plus d'informations...

En-tête : #include <QMessageAuthenticationCode>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core

Note : Toutes les fonctions de cette classe sont réentrantes.

Fonctions publiques

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)

Membres publics statiques

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)

Description détaillée

Utilisez la classe QMessageAuthenticationCode pour générer des codes d'authentification de message basés sur le hachage (HMAC). Cette classe prend en charge tous les algorithmes de hachage cryptographique de QCryptographicHash (voir également QCryptographicHash::Algorithm).

Pour générer un code d'authentification de message, transmettez un algorithme de hachage approprié et une clé secrète au constructeur. Traitez ensuite les données du message en appelant addData() une ou plusieurs fois. Une fois que le message complet a été traité, obtenez le code d'authentification final via la fonction 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"

Pour les cas simples comme ci-dessus, vous pouvez également utiliser la fonction statique hash() :

    QMessageAuthenticationCode::hash(message, key, QCryptographicHash::Sha256).toHex();

Note : La puissance cryptographique du HMAC dépend de la taille de la clé secrète et de la sécurité de la fonction de hachage sous-jacente.

Voir également QCryptographicHash et QCryptographicHash::Algorithm.

Documentation sur les fonctions membres

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

Construit un objet qui peut être utilisé pour créer un hachage cryptographique à partir de données en utilisant la méthode method et la clé key.

Note : Dans les versions de Qt antérieures à la 6.6, cette fonction prenait ses arguments sous la forme QByteArray, et non QByteArrayView. Si vous rencontrez des erreurs de compilation, c'est parce que votre code passe des objets qui sont implicitement convertibles en QByteArray, mais pas en QByteArrayView. Enveloppez l'argument correspondant dans QByteArray{~~~} pour rendre la conversion explicite. Ceci est compatible avec les anciennes versions de Qt.

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

Move-construit un nouveau QMessageAuthenticationCode à partir de other.

Note : L'objet déplacé other est placé dans un état partiellement formé, dans lequel les seules opérations valides sont la destruction et l'affectation d'un nouvel objet.

Cette fonction a été introduite dans Qt 6.6.

[noexcept] QMessageAuthenticationCode::~QMessageAuthenticationCode()

Détruit l'objet.

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

Ajoute data au message.

Remarque : dans les versions de Qt antérieures à la version 6.6, cette fonction prenait ses arguments sous la forme QByteArray, et non QByteArrayView. Si vous rencontrez des erreurs de compilation, c'est parce que votre code passe des objets qui sont implicitement convertibles en QByteArray, mais pas en QByteArrayView. Enveloppez l'argument correspondant dans QByteArray{~~~} pour rendre la conversion explicite. Ceci est rétrocompatible avec les anciennes versions de Qt.

Voir aussi resultView() et result().

bool QMessageAuthenticationCode::addData(QIODevice *device)

Lit les données de la page ouverte QIODevice device jusqu'à ce qu'elle se termine et les ajoute au message. Retourne true si la lecture a réussi.

Remarque : device doit être déjà ouvert.

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

length Ajoute les premiers caractères de data au message.

Il s'agit d'une fonction surchargée.

[static] QByteArray QMessageAuthenticationCode::hash(QByteArrayView message, QByteArrayView key, QCryptographicHash::Algorithm method)

Renvoie le code d'authentification du message message en utilisant la clé key et la méthode method.

Remarque : dans les versions de Qt antérieures à la version 6.6, cette fonction prenait ses arguments sous la forme QByteArray, et non QByteArrayView. Si vous rencontrez des erreurs de compilation, c'est parce que votre code passe des objets qui sont implicitement convertibles en QByteArray, mais pas en QByteArrayView. Enveloppez l'argument correspondant dans QByteArray{~~~} pour rendre la conversion explicite. Ceci est rétrocompatible avec les anciennes versions de Qt.

Voir aussi hashInto().

[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<uchar> buffer, QSpan<const QByteArrayView> messageParts, 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<char> buffer, QByteArrayView message, 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<std::byte> buffer, QByteArrayView message, QByteArrayView key, QCryptographicHash::Algorithm method)

Renvoie le code d'authentification du message (message ou, pour les surcharges QSpan, la concaténation de messageParts) en utilisant la clé key et la méthode method.

La valeur de retour sera un sous-espace de buffer, à moins que buffer ne soit pas de taille suffisante, auquel cas QByteArrayView sera renvoyé à l'état nul.

Ces fonctions ont été introduites dans Qt 6.8.

Voir aussi hash().

[noexcept] void QMessageAuthenticationCode::reset()

Réinitialise les données du message. L'appel à cette fonction n'affecte pas la clé.

QByteArray QMessageAuthenticationCode::result() const

Renvoie le code d'authentification final.

Voir aussi resultView() et QByteArray::toHex().

[noexcept, since 6.6] QByteArrayView QMessageAuthenticationCode::resultView() const

Renvoie la valeur de hachage finale.

Notez que la vue renvoyée reste valide tant que l'objet QMessageAuthenticationCode n'est pas modifié par d'autres moyens.

Cette fonction a été introduite dans Qt 6.6.

Voir aussi result().

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

Définit le secret key. L'appel de cette fonction réinitialise automatiquement l'état de l'objet.

Pour des performances optimales, n'appelez cette fonction que pour modifier la clé active, et non pour définir une clé initiale, comme dans l'exemple suivant

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

Il est préférable de transmettre les clés initiales en tant qu'argument du constructeur :

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

Vous pouvez utiliser std::optional pour retarder la construction d'un QMessageAuthenticationCode jusqu'à ce que vous connaissiez la clé :

std::optional<QMessageAuthenticationCode> mac;
~~~
key = ~~~;
mac.emplace(method, key);
use(*mac);

Note : Dans les versions de Qt XML antérieures à la 6.6, cette fonction prenait ses arguments sous la forme QByteArray, et non QByteArrayView. Si vous rencontrez des erreurs de compilation, c'est parce que votre code passe des objets qui sont implicitement convertibles en QByteArray, mais pas en QByteArrayView. Enveloppez l'argument correspondant dans QByteArray{~~~} pour rendre la conversion explicite. Ceci est compatible avec les anciennes versions de Qt.

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

Remplace ce code d'authentification des messages par other. Cette opération est très rapide et n'échoue jamais.

Cette fonction a été introduite dans Qt 6.6.

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

Move-assigne other à cette instance QMessageAuthenticationCode.

Remarque : l'objet déplacé other est placé dans un état partiellement formé, dans lequel les seules opérations valables sont la destruction et l'affectation d'un nouvel objet.

Cette fonction a été introduite dans Qt 6.6.

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