saide_a Ответов: 2

Проблема декодирования plantext с использованием HMAC crypto++


всем привет
Я столкнулся с проблемой использования HMAC библиотеки cryptopp в разделе декодирования.
Я использовал текучий код для кодирования planText и он работает нормально
этот код описан в этой ссылке [Алгоритм шифрования Вики++ [^]]
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;


Что я уже пробовал:

теперь для расшифровки, что на другой стороне
Я прочитал эту ссылку, но она мне не помогла HexDecoder - Crypto++ Wiki[^]
и этот раздел не возвращает открытый текст
string decoded;
StringSource ss(encoded, true,
    new HexDecoder(
        new StringSink(decoded)
    ) // HexDecoder
);

Буду очень благодарен за любой совет

2 Ответов

Рейтинг:
5

Dave Kreskowiak

Алгоритм-криптографический хеш, а не шифрование.

Вы не можете получить исходное содержимое обратно из хэш-значения.


saide_a

большое спасибо, я понял , у меня есть еще один вопрос , если можно, вы мне поможете.
какую часть сообщения следует использовать при создании подписи(Я собираюсь использовать SHA_1).
и имеет ли значение длина этого(часть сообщения в подписи)?
например , у меня есть идентификатор источника и получателя, время и порядковый номер в моем сообщении.

Dave Kreskowiak

О чем ты говоришь? Если вы создаете подпись, которая является просто хэш-значением, для сообщения, чтобы защитить сообщение, вы не используете часть сообщения, вы используете все сообщение.

saide_a

спасибо

Рейтинг:
17

Richard Deeming

HMAC-это односторонняя криптографическая хэш-функция. Вы не можете извлечь открытый текст из хэша.

HMAC - Википедия[^]


saide_a

большое спасибо, я понял , у меня есть еще один вопрос , если можно, вы мне поможете.
какую часть сообщения следует использовать при создании подписи(Я собираюсь использовать SHA_1).
и имеет ли значение длина этого(часть сообщения в подписи)?
например , у меня есть идентификатор источника и получателя, время и порядковый номер в моем сообщении.