QMessageAuthenticationCode Class
La clase QMessageAuthenticationCode proporciona una forma de generar códigos de autenticación de mensajes basados en hash. Más...
| Cabecera: | #include <QMessageAuthenticationCode> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
Nota: Todas las funciones de esta clase son reentrantes.
Funciones Públicas
| 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) |
Miembros públicos estáticos
| 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) |
Descripción Detallada
Utiliza la clase QMessageAuthenticationCode para generar códigos de autenticación de mensajes basados en hash (HMACs). La clase soporta todos los algoritmos hash criptográficos de QCryptographicHash (ver también QCryptographicHash::Algorithm).
Para generar un código de autenticación de mensaje, pasa un algoritmo hash adecuado y una clave secreta al constructor. A continuación, procesa los datos del mensaje llamando a addData() una o más veces. Una vez procesado todo el mensaje, obtén el código de autenticación final a través de la función 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"
Para casos sencillos como el anterior, también puedes utilizar la función estática hash():
QMessageAuthenticationCode::hash(message, key, QCryptographicHash::Sha256).toHex();
Nota: La fuerza criptográfica del HMAC depende del tamaño de la clave secreta y de la seguridad de la función hash subyacente.
Véase también QCryptographicHash y QCryptographicHash::Algorithm.
Documentación de las funciones miembro
[explicit] QMessageAuthenticationCode::QMessageAuthenticationCode(QCryptographicHash::Algorithm method, QByteArrayView key = {})
Construye un objeto que puede utilizarse para crear un hash criptográfico a partir de datos utilizando el método method y la clave key.
Nota: En versiones de Qt anteriores a la 6.6, esta función tomaba sus argumentos como QByteArray, no como QByteArrayView. Si experimentas errores de compilación, es porque tu código está pasando objetos que son implícitamente convertibles a QByteArray, pero no a QByteArrayView. Envuelva el argumento correspondiente en QByteArray{~~~} para hacer explícita la conversión. Esto es compatible con versiones anteriores de Qt.
[noexcept, since 6.6] QMessageAuthenticationCode::QMessageAuthenticationCode(QMessageAuthenticationCode &&other)
Move-construye un nuevo QMessageAuthenticationCode a partir de other.
Nota: El objeto movido-desde other se coloca en un estado parcialmente formado, en el que las únicas operaciones válidas son la destrucción y la asignación de un nuevo objeto.
Esta función se introdujo en Qt 6.6.
[noexcept] QMessageAuthenticationCode::~QMessageAuthenticationCode()
Destruye el objeto.
[noexcept] void QMessageAuthenticationCode::addData(QByteArrayView data)
Añade data al mensaje.
Nota: En versiones de Qt anteriores a la 6.6, esta función tomaba sus argumentos como QByteArray, no como QByteArrayView. Si experimenta errores de compilación, es porque su código está pasando objetos que son implícitamente convertibles a QByteArray, pero no a QByteArrayView. Envuelva el argumento correspondiente en QByteArray{~~~} para hacer explícita la conversión. Esto es compatible con versiones anteriores de Qt.
Véase también resultView() y result().
bool QMessageAuthenticationCode::addData(QIODevice *device)
Lee los datos del QIODevice abierto device hasta que termina y los añade al mensaje. Devuelve true si la lectura se ha realizado correctamente.
Nota: device debe estar ya abierto.
void QMessageAuthenticationCode::addData(const char *data, qsizetype length)
Añade los primeros length caracteres de data al mensaje.
Se trata de una función sobrecargada.
[static] QByteArray QMessageAuthenticationCode::hash(QByteArrayView message, QByteArrayView key, QCryptographicHash::Algorithm method)
Devuelve el código de autenticación del mensaje message utilizando la clave key y el método method.
Nota: En las versiones de Qt anteriores a la 6.6, esta función tomaba sus argumentos como QByteArray, no como QByteArrayView. Si experimenta errores de compilación, es porque su código está pasando objetos que son implícitamente convertibles a QByteArray, pero no a QByteArrayView. Envuelva el argumento correspondiente en QByteArray{~~~} para hacer explícita la conversión. Esto es compatible con versiones anteriores de Qt.
Véase también 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)
Devuelve el código de autenticación del mensaje (message o, para las sobrecargas de QSpan, la concatenación de messageParts) utilizando la clave key y el método method.
El valor devuelto será una subcadena de buffer, a menos que buffer tenga un tamaño insuficiente, en cuyo caso se devuelve un QByteArrayView nulo.
Estas funciones se introdujeron en Qt 6.8.
Véase también hash().
[noexcept] void QMessageAuthenticationCode::reset()
Restablece los datos del mensaje. La llamada a esta función no afecta a la tecla.
QByteArray QMessageAuthenticationCode::result() const
Devuelve el código de autenticación final.
Véase también resultView() y QByteArray::toHex().
[noexcept, since 6.6] QByteArrayView QMessageAuthenticationCode::resultView() const
Devuelve el valor hash final.
Tenga en cuenta que la vista devuelta sólo será válida mientras el objeto QMessageAuthenticationCode no se modifique por otros medios.
Esta función se introdujo en Qt 6.6.
Véase también result().
[noexcept] void QMessageAuthenticationCode::setKey(QByteArrayView key)
Establece el secreto key. Al llamar a esta función se restablece automáticamente el estado del objeto.
Para un rendimiento óptimo, llame a esta función sólo para cambiar la clave activa, no para establecer una clave inicial, como en
QMessageAuthenticationCode mac(method); mac.setKey(key); // does extra work use(mac);
Prefiera pasar claves iniciales como argumento del constructor:
QMessageAuthenticationCode mac(method, key); // OK, optimal use(mac);
Puede utilizar std::optional para retrasar la construcción de un QMessageAuthenticationCode hasta que conozca la clave:
std::optional<QMessageAuthenticationCode> mac; ~~~ key = ~~~; mac.emplace(method, key); use(*mac);
Nota: En versiones de Qt anteriores a la 6.6, esta función tomaba sus argumentos como QByteArray, no QByteArrayView. Si experimenta errores de compilación, es porque su código está pasando objetos que son implícitamente convertibles a QByteArray, pero no a QByteArrayView. Envuelva el argumento correspondiente en QByteArray{~~~} para hacer explícita la conversión. Esto es compatible con versiones anteriores de Qt.
[noexcept, since 6.6] void QMessageAuthenticationCode::swap(QMessageAuthenticationCode &other)
Intercambia este código de autenticación de mensajes con other. Esta operación es muy rápida y nunca falla.
Esta función se introdujo en Qt 6.6.
[noexcept, since 6.6] QMessageAuthenticationCode &QMessageAuthenticationCode::operator=(QMessageAuthenticationCode &&other)
Mover-asigna other a esta instancia QMessageAuthenticationCode.
Nota: El objeto movido-desde other se coloca en un estado parcialmente formado, en el que las únicas operaciones válidas son la destrucción y la asignación de un nuevo objeto.
Esta función se introdujo en 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.