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, урезанный версия вниз, которая звучит хорошо, но нет ни одного рабочего примера.
Может ли кто-нибудь указать мне правильное направление? Большое спасибо!!
@Harry, 👍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");
Тогда это тоже работает.
Я использовал https://github.com/Cathedrow/Cryptosuite/ на ESP8266. Для этого в дополнение к описанным Джотом изменениям достаточно удалить
#include <avr/io.h>
#include <avr/pgmspace.h>
из файлов заголовков. Тогда все работает нормально.
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Большое спасибо!! Вы отличный учитель! У меня загружена и установлена Arduino IDE 1.8.9. И добавил папку SHA внутри «C:\Program Files (x86)\Arduino\libraries\», чтобы установить библиотеки (sha256.cpp и sha256.h), взятые из второй ссылки, и использовать пример (hmacsha256test.pde) из первую ссылку и внес изменения, как вы предложили. Это работает хорошо!! Хотя я получаю сообщение «Недостаточно памяти, могут возникнуть проблемы со стабильностью» из-за того, что скетч занимает 22% дискового пространства. Но это нормально для теста HMAC для arduino. Еще раз спасибо! Мерси! Грациас! Вилен Данк!谢谢!, @Harry