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

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


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

Nothing Personal, 

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

Ога)

avatar

Читайте на SMART-LAB:
Фото
Что с новым выпуском Арлифт? Отвечаем на главные вопросы инвесторов
Последние недели для рынка высокодоходных облигаций выдались напряженными. Инвесторы внимательнее смотрят на долговую нагрузку эмитентов,...
Фото
Коксующийся уголь подорожал до максимума за два года
Дарья Фёдорова Цены на уголь подскочили с начала августа: австралийский бенчмарк вырос на 28%, до $276 за тонну, цены в Китае, — на 43% до...
Фото
🔥 Топ-10 российских акций
Подборка перспективных российских акций обновилась: в её составе провели тактическую замену. Об изменениях рассказывает инвестиционный стратег ВТБ...
Фото
Базис купил компанию Proto. Что это значит для акций?
Что нам известно по этой сделке? ✅Пресс-релиз читаем тут , переписывать не вижу смысла ✅Кого купили, можно посмотреть тут:...

теги блога elektroyar

....все тэги



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