Блог им. elektroyar

Расчет HMAC в С++

Расчет HMAC в С++


Всем привет! Продолжаем курс велосипедостроения. И на этот раз зачем-то решил  сделать простенький алгоритм расчета HMAC для SHA256 и SHA512. А то иногда бывает нужно подключить какую нибудь криптобиржу, а там нужен этот самый HMAC. Вот ссылка на репозиторий самой либы.

Для расчета HMAC надо вызвать функцию get_hmac, которая имеет несколько параметров:

std::string get_hmac(
	std::string key, 
	const std::string &msg, 
	const TypeHash type, 
	const bool is_hex = true, 
	const bool is_upper = false);
  • key — Строка, содержащая секретный ключ.
  • msg — Строка, содержащая сообщение.
  • type — Тип хеш-функции. Указать hmac::TypeHash::SHA256 или hmac::TypeHash::SHA512.
  • is_hex — Флаг, который отвечает за формат ответа. Чтобы получить строку, содержащую HMAC в шестнадцетиричном формате, данный параметр должен быть указан как true. Иначе строка будет содержать числовое значение HMAC по 8 бит в каждом элеименте строки. По умолчанию данный параметр true.
  • is_upper — Флаг, который отвечает за регистр символов ответа (нижний или верхний). Данный флаг влияет на ответ функции только если установлен флаг is_hex. По умолчанию данный параметр false.
Простой пример кода для расчета HMAC SHA256 и SHA512:
#include <iostream>
#include <hmac.hpp>

int main() {
    std::string input("grape");
    std::string key("12345");
	
    /* проверяем работу HMAC SHA256 */
    std::string output1 = hmac::get_hmac(key, input, hmac::TypeHash::SHA256);
    std::cout << "get_hmac('"<< key << "','" << input << "',SHA256): " << output1 << std::endl;
    std::cout << "The answer should be: "
        "7632ac2e8ddedaf4b3e7ab195fefd17571c37c970e02e169195a158ef59e53ca"
        << std::endl << std::endl;

    /* проверяем работу HMAC SHA512 */
    std::string output2 = hmac::get_hmac(key, input, hmac::TypeHash::SHA512);
    std::cout << "get_hmac('"<< key << "','" << input << "',SHA512): " << output2 << std::endl;
    std::cout << "The answer should be: "
        "c54ddf9647a949d0df925a1c1f8ba1c9d721a671c396fde1062a71f9f7ffae5dc10f6be15be63bb0363d051365e23f890368c54828497b9aef2eb2fc65b633e6"
        << std::endl << std::endl;
	return 0;
}

На этом собственно пока все. Также скоро выйдет в свет библиотека с готовыми бинарниками (без регистрации и СМС) для связки МТ4 и Binance.

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
  • Ключевые слова:
  • C++
628 | ★1
3 комментария
Я тоже начинал с С++.
А потом покатился, деньги, биржа, квартира в Испании, дешевый виски без акцизных наценок заботливого государства.

Дети, не делайте так.
Идите на завод.
Лучше на Николаевский судостроительный завод (там раньше атомные крейсеры производили, а теперь — печки-буржуйки).
Все равно распилят, а так хоть вам достанется.


P.S. Кстати, а get_hmac — оно будет в консоли и в неуправляемом коде?
Да, удобно.
avatar

Nothing Personal, 

P.S. Кстати, а get_hmac — оно будет в консоли и в неуправляемом коде?

Ога)

avatar

Читайте на SMART-LAB:
Инвестиции без спешки: торгуем в выходные
Алексей Девятов Клиенты Альфа-Инвестиций могут совершать сделки в выходные . Торги в эти дни не отличаются волатильностью, но если всё-таки...
Фото
Итоги первичных размещений ВДО и некоторых розничных выпусков на 10 июля 2026 г.
Следите за нашими новостями в удобном формате: Telegram , Youtube , RuTube, Smart-lab , ВКонтакте , Сайт
Фото
Размещение облигаций Атомэнергопрома в долларах и юанях: интересно ли поучаствовать?
10 июля Атомэнергопром соберет заявки на выпуски облигаций в долларах сроком 2,5 года и в юанях сроком 1,5 года. Объемы будут определены после...
Фото
Сбер РПБУ 6 мес. 2026 г. - кому нужны 30% доходности?
Сбер опубликовал финансовые результаты по РСБУ за 6 месяцев 2026 года. Чистая прибыль за полгода работы составила 995 млрд руб. (+20,4%). За...

теги блога elektroyar

....все тэги



UPDONW
Новый дизайн