使用crypto++的HMAC解密明文

Decrypting plantext using HMAC of crypto++

我在使用 crypto++ 库的 HMAC 时遇到问题

我已经用这个 link 制作了一条加密消息 crypto++-HMAC,它工作正常

AutoSeededRandomPool prng;
SecByteBlock key(16);
prng.GenerateBlock(key, key.size());
string plain = "HMAC Test";
string mac, encoded;
// Pretty print key
encoded.clear();
StringSource ss1(key, key.size(), true,
new HexEncoder(
    new StringSink(encoded)
) // HexEncoder
); // StringSource

cout << "key: " << encoded << endl;
cout << "plain text: " << plain << endl;

try
{
HMAC< SHA256 > hmac(key, key.size());

StringSource ss2(plain, true, 
    new HashFilter(hmac,
        new StringSink(mac)
    ) // HashFilter      
); // StringSource
}
catch(const CryptoPP::Exception& e)
{
cerr << e.what() << endl;
exit(1);
}
// Pretty print
encoded.clear();
StringSource ss3(mac, true,
new HexEncoder(
    new StringSink(encoded)
) // HexEncoder
); // StringSource

cout << "hmac: " << encoded << endl;

现在在另一边我想解密这条消息并得到真正的纯文本 但我还没有得到任何结果。我已经检查了 link decode 的步骤,但它对我没有帮助。我不知道我应该在哪里使用Key?

请指导我找到解决方案

我了解到HMAC不是一种加密算法,而是一种编码算法。

其他人可以使用 HMAC 查看我们的消息,但他们无法向我们提供未经验证的消息。

并且所有消息字节都可以被编码用于发送,在接收部分我们用我们的密钥解码并检查消息的权限,消息的编码部分根据我们使用的散列函数(MD5,SHA1,SHA256)具有固定大小)