- class QMessageAuthenticationCode#
QMessageAuthenticationCode类提供了一种生成基于哈希的消息认证码的方式。更多...摘要#
方法#
def
__init__()def
addData()def
reset()def
result()def
resultView()def
setKey()def
swap()
静态函数#
def
hash()
注意
本文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建票据来通知我们
详细描述#
警告
本节包含从 C++ 自动翻译到 Python 的代码片段,可能包含错误。
使用
QMessageAuthenticationCode类可以生成基于散列的消息认证码(HMAC)。该类支持QCryptographicHash中的所有加密散列算法(另请参阅Algorithm)。要生成消息认证码,请在构造函数中传递适当的哈希算法和密钥。然后通过调用
addData()一次或多次处理消息数据。处理完整个消息后,通过调用result()函数获得最终的认证码key = "key" message = "The quick brown fox jumps over the lazy dog" ... code = QMessageAuthenticationCode(QCryptographicHash.Sha256, key) code.addData(message) code.result().toHex() # returns "f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8"
对于像上面这样的简单情况,你还可以使用静态的
hash()函数QMessageAuthenticationCode.hash(message, key, QCryptographicHash.Sha256).toHex()
使用方法
method和密钥key创建一个用于从数据中生成加密哈希的对象。注意
在Qt 6.6之前的版本中,此函数将参数视为
QByteArray,而不是QByteArrayView。如果您遇到编译错误,那是因为您的代码传递了可以隐式转换为QByteArray但不是QByteArrayView的对象。在相应的参数上使用QByteArray{~~~}使转换显式。这是向后兼容旧Qt版本的。- addData(data)#
- 参数:
data –
QByteArrayView
将
data添加到消息中。注意
在Qt 6.6之前的版本中,此函数将参数视为
QByteArray,而不是QByteArrayView。如果您遇到编译错误,那是因为您的代码传递了可以隐式转换为QByteArray但不是QByteArrayView的对象。在相应的参数上使用QByteArray{~~~}使转换显式。这是向后兼容旧Qt版本的。另请参阅
- addData(device)
- 参数:
device –
QIODevice- 返回类型::
bool
从已打开的
QIODevicedevice中读取数据,直到它结束,并将其添加到消息中。如果读取成功,则返回true。注意
device必须已经打开。- addData(data, length)
- 参数:
data – str
length – int
这是一个重载函数。
将
data的前length个字符添加到消息中。- static hash(message, key, method)#
- 参数:
message –
QByteArrayViewkey –
QByteArrayViewmethod –
Algorithm
- 返回类型::
使用密钥
key和方法method为消息message返回身份验证代码。注意
在Qt 6.6之前的版本中,此函数将参数视为
QByteArray,而不是QByteArrayView。如果您遇到编译错误,那是因为您的代码传递了可以隐式转换为QByteArray但不是QByteArrayView的对象。在相应的参数上使用QByteArray{~~~}使转换显式。这是向后兼容旧Qt版本的。- reset()#
重置消息数据。调用此函数不会影响密钥。
- result()#
- 返回类型::
返回最终的认证代码。
另请参阅
- resultView()#
- 返回类型::
QByteArrayView
返回最终的哈希值。
注意,返回的视图仅在
QMessageAuthenticationCode对象未被其他方式修改的情况下保持有效。另请参阅
- setKey(key)#
- 参数:
key –
QByteArrayView
设置密钥。调用此函数将自动重置对象状态。
为了最佳性能,仅在此函数用于更改活动密钥时调用,而不是设置初始密钥,例如
QMessageAuthenticationCode mac(method); mac.setKey(key); // does extra work use(mac);
建议将初始密钥作为构造函数参数传递
QMessageAuthenticationCode mac(method, key); // OK, optimal use(mac);
您可以使用std::optional延迟构建一个
QMessageAuthenticationCode,直到您知道密钥std::optional<QMessageAuthenticationCode> mac; ~~~ key = ~~~; mac.emplace(method, key); use(*mac);
注意
在Qt 6.6之前的版本中,此函数将参数视为
QByteArray,而不是QByteArrayView。如果您遇到编译错误,那是因为您的代码传递了可以隐式转换为QByteArray但不是QByteArrayView的对象。在相应的参数上使用QByteArray{~~~}使转换显式。这是向后兼容旧Qt版本的。- swap(other)#
- 参数:
other –
QMessageAuthenticationCode
与当前的消息认证代码交换other。此操作非常快且永远不会失败。