QMessageAuthenticationCode Class
La classe `QMessageAuthenticationCode` permet de générer des codes d'authentification de messages basés sur un hachage. En savoir plus...
| En-tête : | #include <QMessageAuthenticationCode> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
Remarque : 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 un hachage (HMAC). La 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 une ou plusieurs fois la fonction addData() . Une fois le message entièrement traité, récupérez 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 celui ci-dessus, vous pouvez également utiliser la fonction statique ` hash()` :
QMessageAuthenticationCode::hash(message, key, QCryptographicHash::Sha256).toHex();Remarque : la résistance 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 permettant de générer un hachage cryptographique à partir de données à l'aide de la méthode method et de la clé key.
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 transmet des objets implicitement convertibles en QByteArray, mais pas en QByteArrayView. Enveloppez l'argument correspondant dans QByteArray{~~~} pour rendre la conversion explicite. Cette méthode est rétrocompatible avec les anciennes versions de Qt.
[noexcept, since 6.6] QMessageAuthenticationCode::QMessageAuthenticationCode(QMessageAuthenticationCode &&other)
La fonction `move` construit un nouvel objet `QMessageAuthenticationCode` à partir de ` other`.
Remarque : l'objet d'origine 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 transmet des objets implicitement convertibles en QByteArray, mais pas en QByteArrayView. Enveloppez l'argument correspondant dans QByteArray{~~~} pour rendre la conversion explicite. Cette méthode est rétrocompatible avec les anciennes versions de Qt.
Voir également resultView() et result().
bool QMessageAuthenticationCode::addData(QIODevice *device)
Lit les données du fichier ouvert QIODevice device jusqu'à la fin et les ajoute à message. Renvoie true si la lecture s'est déroulée correctement.
Remarque : le fichier device doit être déjà ouvert.
void QMessageAuthenticationCode::addData(const char *data, qsizetype length)
Ajoute les length 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 à l'aide de la clé key et de 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 transmet des objets implicitement convertibles en QByteArray, mais pas en QByteArrayView. Enveloppez l'argument correspondant dans QByteArray{~~~} pour rendre la conversion explicite. Cette méthode est rétrocompatible avec les anciennes versions de Qt.
Voir également 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)
Renvoie le code d'authentification du message (message ou, pour les surcharges de QSpan, la concaténation de messageParts) à l'aide de la clé key et de la méthode method.
La valeur renvoyée sera un sous-span de ` buffer`, sauf si ` buffer ` n’est pas suffisamment grand, auquel cas un ` QByteArrayView ` nul est renvoyé.
Ces fonctions ont été introduites dans Qt 6.8.
Voir également hash().
[noexcept] void QMessageAuthenticationCode::reset()
Réinitialise les données des messages. L'appel de cette fonction n'a aucune incidence sur la clé.
QByteArray QMessageAuthenticationCode::result() const
Renvoie le code d'authentification final.
Voir également resultView() et QByteArray::toHex().
[noexcept, since 6.6] QByteArrayView QMessageAuthenticationCode::resultView() const
Renvoie la valeur de hachage finale.
Notez que la vue renvoyée ne reste valide que 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 l'key e secrète. 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
QMessageAuthenticationCode mac(method);
mac.setKey(key); // does extra work
use(mac);Préférez passer les clés initiales en tant qu’argument du constructeur :
QMessageAuthenticationCode mac(method, key); // OK, optimal
use(mac);Vous pouvez utiliser std::optional pour différer la construction d’un QMessageAuthenticationCode jusqu’à ce que vous connaissiez la clé :
std::optional<QMessageAuthenticationCode> mac;
~~~
key = ~~~;
mac.emplace(method, key);
use(*mac);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 transmet des objets implicitement convertibles en ` QByteArray`, mais pas en ` QByteArrayView`. Enveloppez l’argument correspondant dans ` QByteArray{~~~} ` pour rendre le transtypage explicite. Cette méthode est rétrocompatible avec les anciennes versions de Qt.
[noexcept, since 6.6] void QMessageAuthenticationCode::swap(QMessageAuthenticationCode &other)
Permet de remplacer ce code d'authentification de message par other. Cette opération est très rapide et ne rencontre jamais d'échec.
Cette fonction a été introduite dans Qt 6.6.
[noexcept, since 6.6] QMessageAuthenticationCode &QMessageAuthenticationCode::operator=(QMessageAuthenticationCode &&other)
Cette opération attribue l'other à cette instance de QMessageAuthenticationCode.
Remarque : l’objet d’origine 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.
© 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.