uint8_t* login_=MD5::make_hash(login); // получили хеш // free(login_); // здесь мы сразу же его затрем, посему отсюда удаляем Arduino_CRC32 crc32; uint32_t crc32_res = crc32.calc((uint8_t const *)login_, strlen(login_)); // тут что бы ворнинга небыло, для красоты, указываем что переменная (uint8_t const *) data_buf[0] = crc32_res >> 24; data_buf[1] = crc32_res >> 16; data_buf[2] = crc32_res >> 8; data_buf[3] = crc32_res; free(login_); // вот тут, когда нам хеш уже не нужен, можем почистить память

Комментарии: 8

  1. Dim

    или char login_[]=MD5::make_hash(login);

  2. Dim

    да что же в этом хэше такого тяжелого - он же всего 8 байт!

    • Stanislav

      Он в цикле создаётся. И не убивается - через какое-то время память ёк

    • Toha

      тебе в лом одну строчку с фри в нужном месте написать? ты уже на 2 порядка больше возмущений написал

      • Aleksey

        вовремя закончить проект - это не по програмистски

      • Dim

        ну вот написал char login[]="login"; char password[]="password"; uint8_t* login_=MD5::make_hash(login); Arduino_CRC32 crc32; uint32_t crc32_res = crc32.calc((uint8_t *)login_, strlen(login_)); data_buf[0] = crc32_res >> 24; data_buf[1] = crc32_res >> 16; data_buf[2] = crc32_res >> 8; data_buf[3] = crc32_res; free(login_); uint8_t* key=MD5::make_hash(password); //free(key); но все равно идут ошибки D:\Arduino\arduino-1.8.15\projects\SoftwareSerialExample_crypto\SoftwareSerialExample_crypto.ino: In function 'void loop()': D:\Arduino\arduino-1.8.15\projects\SoftwareSerialExample_crypto\SoftwareSerialExample_crypto.ino:61:67: warning: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'const char*' [-fpermissive] uint32_t crc32_res = crc32.calc((uint8_t *)login_, strlen(login_)); ^ In file included from D:\Arduino\arduino-1.8.15\hardware\arduino\avr\cores\arduino/Arduino.h:25:0, from sketch\SoftwareSerialExample_crypto.ino.cpp:1: d:\arduino\arduino-1.8.15\hardware\tools\avr\avr\include\string.h:399:15: note: initializing argument 1 of 'size_t strlen(const char*)' extern size_t strlen(const char *) ATTR_PURE ; ^~~~~~

        • Toha

          (uint8_t *)login_ на (const char*)login_ поменяй и еще раз, это не ошибка, оно не влияет

          • Dim

            а в чем разница?

Не нашли ответ?

Вам также может быть интересно

Это плохо что нельзя через мощную программу удалить полностью системную программу Хакеры могут так? Удалить полностью системную... Читать далее