HMAC SHA256 в случае использования Arduino?

Я выполняю школьный проект и хочу реализовать HMAC на плате типа Arduino UNO. Я тестировал Cryptosuite, но ни один из примеров не работает для меня. Например, этот: https://github.com/Cathedrow/Cryptosuite/blob /master/Sha/examples/hmacsha256test/hmacsha256test.pde

Этот https://github.com/simonratner/Arduino-SHA-256, урезанный версия вниз, которая звучит хорошо, но нет ни одного рабочего примера.

Может ли кто-нибудь указать мне правильное направление? Большое спасибо!!

, 👍2


2 ответа


Лучший ответ:

2

Когда вы задаете вопрос здесь или на форуме, пожалуйста, расскажите, что вы сделали и каков был результат. Когда вы говорите, что это не работает, значит, у нас недостаточно информации, и на ваш вопрос могут не ответить.

Я проверил первую предоставленную вами ссылку на Cryptosuite. . Он устарел и нуждается в исправлении.
Я переименовал "hmacsha256test.pde" в "hmacsha256test.ino".
Ошибки и предупреждения компилятора находятся в нижней части Arduino IDE. Прокрутите вверх, чтобы найти первую проблему и исправить ее. Повторяйте, пока не сработает.

Для PROGMEM необходимо использовать ключевое слово 'const'. Например, в "sha256.cpp":

const uint32_t sha256K[] PROGMEM = {

Функция записи должна возвращать значение size_t.

В sha256.h:

// виртуальная пустота write(uint8_t);
virtual size_t write(uint8_t);

В sha256.cpp:

size_t Sha256Class::write(uint8_t data) {
  ++byteCount;
  addUncounted(data);
  return 1;
}

Затем он компилируется и запускается на Arduino Uno, хотя есть предупреждение о нехватке памяти, так как используется 75% оперативной памяти.

вторая ссылка — это измененная версия того же Cryptosuite. Он должен иметь возможность использовать примеры Cryptosuite, но это не так.
Я тоже могу заставить это работать.

Используя тот же пример Cryptosuite "hmacsha256test.pde" (я переименовал его в "hmacsha256test.ino"), создайте объект "sha" после включения "sha256.h":

#include "sha256.h"
Sha256 sha;

В этом примере замените все вызовы функций "Sha256" вызовами функций "sha":

sha.initHmac(hmacKey1,20);
sha.print("Hi There");

Тогда это тоже работает.

,

Большое спасибо!! Вы отличный учитель! У меня загружена и установлена Arduino IDE 1.8.9. И добавил папку SHA внутри «C:\Program Files (x86)\Arduino\libraries\», чтобы установить библиотеки (sha256.cpp и sha256.h), взятые из второй ссылки, и использовать пример (hmacsha256test.pde) из первую ссылку и внес изменения, как вы предложили. Это работает хорошо!! Хотя я получаю сообщение «Недостаточно памяти, могут возникнуть проблемы со стабильностью» из-за того, что скетч занимает 22% дискового пространства. Но это нормально для теста HMAC для arduino. Еще раз спасибо! Мерси! Грациас! Вилен Данк!谢谢!, @Harry


1

Я использовал https://github.com/Cathedrow/Cryptosuite/ на ESP8266. Для этого в дополнение к описанным Джотом изменениям достаточно удалить

#include <avr/io.h>
#include <avr/pgmspace.h>

из файлов заголовков. Тогда все работает нормально.

,