我得到了这样一段代码:
void SHAPresenter::hashData(QString data)
{
QCryptographicHash* newHash = new QCryptographicHash(QCryptographicHash::Sha3_224);
newHash->addData(data.toUtf8());
QByteArray hashResultByteArray = newHash->result();
setHashedData(QString(hashResultByteArray.toHex()));
delete newHash;
}
根据Qt 规范,QCryptographicHash::Sha3_224应该“生成一个 SHA3-224 哈希和。在 Qt 5.1 中引入”。我想将该代码的结果与其他来源进行比较,以检查我是否以正确的方式放置数据。我找到了网站:https : //emn178.github.io/online-tools/sha3_224.html 所以我们在这两种情况下都有 SHA3_224。问题是第一个会从“test”生成这样一个字节串:
3be30a9ff64f34a5861116c5198987ad780165f8366e67aff4760b5e
第二个:
3797bf0afbbfca4a7bbba7602a2b552746876517a7f9b7ce2db0ae7b
一点都不相似。但也有一个做“Keccak-224”的网站: https ://emn178.github.io/online-tools/keccak_224.html
这里的结果是:
3be30a9ff64f34a5861116c5198987ad780165f8366e67aff4760b5e
我知道 SHA3 是基于 Keccak 的功能 - 但这里有什么问题?这两种实现中的哪一种以适当的方式遵循 NIST FIPS 202,我们如何知道这一点?