Блог им. 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++
603 | ★1
3 комментария
Я тоже начинал с С++.
А потом покатился, деньги, биржа, квартира в Испании, дешевый виски без акцизных наценок заботливого государства.

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


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

Nothing Personal, 

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

Ога)

avatar

Читайте на SMART-LAB:
🖥 Софтлайн накопил долги
Разработчик ПО отчитался за 4 квартал и весь прошлый год   Софтлайн (SOFL) ➡️ Инфо и показатели     Результаты за 4 квартал —...
Фото
🔔 Информация о выплате купонного дохода для наших инвесторов
Сегодня, 19 февраля, ООО МФК «ПСБ Финанс» выплатило купонный доход по облигациям ПСБ Фин2P2 (RU000A10E4G8) за купонный период с...
Фото
Позитив: вчера, сегодня, завтра
На этой неделе Максим Филиппов, заместитель гендиректора Positive Technologies, и Юрий Мариничев, IR-директор, побывали в гостях у SberCIB. В...
Фото
Россети Центр. Отчет об исполнении инвестпрограммы за Q4 2025г. Ожидаемо снизилась дивидендная база по РСБУ.
Компания Россети Центр опубликовала отчет об исполнении инвестпрограммы за Q4 2025г., где показаны финансовые показатели компании по РСБУ в...

теги блога elektroyar

....все тэги



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