- 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
从已打开的
QIODevice
device
中读取数据,直到它结束,并将其添加到消息中。如果读取成功,则返回true
。注意
device
必须已经打开。- addData(data, length)
- 参数:
data – str
length – int
这是一个重载函数。
将
data
的前length
个字符添加到消息中。- static hash(message, key, method)#
- 参数:
message –
QByteArrayView
key –
QByteArrayView
method –
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。此操作非常快且永远不会失败。