Switch to English version?
Yes
Переключитись на українську версію?
Так
Переключиться на русскую версию?
Да
Przełączyć się na polską weкrsję?
Tak
3 из 3
истекло время актуальности
публикация
прием ставок
истекло время актуальности
Задача.
Нужна функция шифрования/дешифрирования на языке “С” для платы “ATmega32U4” Ардуино.
Нужно подготовить на языке “С” функцию для шифрование и дешифрования строки.
Она будет выполняться в микроконтроллера “ATmega32U4”
Его скорости должно хватить чтобы за период до 10 сек пароль расшифровать или зашифровать. Пароль храниться в еепром которую как я понимаю не сложно прочесть поэтому нужно шифрование.
Функция должна быть на базе существующих надежных протоколов шифрования.
Я вижу это например так.
Функция принимает на вход параметры
указатель на адрес где храниться строка “ключ”
количество символов которые будут использоваться. Если число больше длины строки, то длина строки.
указатель на адрес где храниться обрабатываемая строка.
Флаг (зашифровать или расшифровать строку)
Возможно есть другие варианты как закрыть еепром от чтения, что позволило бы хранить там данные в открытом виде.
Делали все тут (ТЗ и уточнения)
https://drive.google.com/open?id=1WOmPisMempL6DJ1FK4vU0_BRkrlirOTdFHKn6MD6fOU
Для начала нужен скетч с простым примером шифрования/дешифрования на
базе существующий библиотек.
Данные выводятся в монитор порта, а вводятся прямо в переменные скетча.
Библиотека:
https://github.com/kokke/tiny-AES-c
дата онлайн рейтинг стоимость время выполнения
Здравствуйте.
Могу выполнить данную работу.
—
Дополнительный текст.
306 просмотров
счет:4
Принятый ответПроцессор Atmel имеет довольно ограниченное управление памятью, поэтому легко получить фрагментированную память. Помните, что стек времени выполнения и куча также ограничены.
Статическая строка также может быть помещена в PROGMEM
В arduino.cc также есть функция свободной памяти, которая покажет вам, сколько у вас свободной памяти.
счет:0
У меня была похожая проблема с длиной строки, но почти во всех случаях я обнаружил, что я был ограничен длиной буфера SPI, равной 64. То ли задержки вставлены в код намеренно, то ли слишком много операторов печати, я d советую всегда помнить о возможных переполнениях.
счет:3
У меня были аналогичные трудности при сборке JSON с использованием класса Arduino String. В конце концов я сдался, потому что понял, что пытаюсь внедрить большие системные технологии в крошечную встроенную систему. Теперь я использую предварительно выделенные массивы символов и функции C, такие как sprintf, для работы со строками, и я кодирую данные самым компактным способом, который я все еще могу использовать в своем приложении.
Вам может быть интересна эта ссылка (я ее не писал):
Пять вещей, которые я никогда не использую в проектах Arduino….
- Класс String
На первый взгляд, класс String в библиотеке Arduino упрощает работу со строками. Он предоставляет множество функций для выполнения действий, которые вы не сможете легко сделать, если представите строки в виде указателей на массивы символов, как это обычно делается в C. Так в чем же проблема?
Проблема заключается в том, что операции со строками распределяют память динамически и способами, которые трудно предсказать, когда входные данные для программы являются переменными, в сочетании с тем фактом, что Arduino имеют очень ограниченный объем ОЗУ (2 КБ на Arduino Uno). Динамическое выделение памяти обычно вызывает фрагментацию памяти. Это означает, что ваша программа может работать корректно для некоторых входных данных или некоторое время, но аварийно завершать работу с другими входными данными или через более длительное время из-за исчерпания памяти. См. http://critical.eschertech.com/2010/07/30/dynamic-memory-allocation-in-critical-embedded-systems/ для получения дополнительной информации о том, почему динамическое выделение памяти является плохой идеей во встраиваемом программном обеспечении, реализованном на C/C++. .
Когда я могу использовать String? При написании быстрого и грязного наброска, чтобы попробовать что-то, главное, чтобы он держался вместе не более нескольких минут!
счет:7
У arduino очень ограниченная память — около 2 КБ для ваших данных (32 КБ для вашей программы во флэш-памяти). Под прикрытием класс String выполняет вызов realloc для каждой конкатенации строк. Это может привести к фрагментации памяти, когда для строки нет ни одного непрерывного блока памяти.
Я бы посоветовал вам отказаться от использования класса String и просто выделить большой буфер в начале и дополнить его, но вам нужно будет иметь представление о том, насколько большим он будет, прежде чем выделять его.
Если вам нравится жить опасно, вы можете посмотреть исходный код класса String и посмотреть, можно ли заставить его предварительно выделить большой буфер, но я не вижу документированного способа сделать это.
Кредит Кому:
stackoverflow.com
Работа с представлениями Drupal
Как сохранить "разметку" формы Drupal? элемент от рендеринга внутри оболочки "отправить" элемент?
в представлении drupal 7, как комментировать без перенаправления на страницу типа контента?
Ckeditor_image Ошибка загрузки
Breadcrumbs/Views в Drupal
Обработчик отправки формы Drupal 7 не выполняется
drupal 7: перенаправить комментарии в представлении
как получить поле cck таблицы ссылок узлов в представлении drupal
Мультисайт Drupal и одна тема: как узнать, какой мультисайтовый пользователь включен?
Проблемы со взрывом PHP
Используйте этот бесплатный онлайн-калькулятор длины строки, который мгновенно подсчитывает длину строки. Либо вы можете скопировать и вставить свой текст в текстовую область выше, либо вы можете ввести свой текст. Нажав кнопку «Отправить», счетчик отобразит количество символов и пробелов в вашем тексте.
В языках компьютерного программирования строковые функции используются для управления строкой или запроса информации о строке. Основным примером строковой функции является функция длины (строки). Например, length(«hello world») вернет 11.
Функция длины строки возвращает длину строкового литерала. Строковый литерал — это последовательность символов, заключенная в двойные кавычки («).
Большинство языков программирования со строковым типом данных будут иметь некоторые строковые функции. В каждом языке могут быть другие низкоуровневые способы, которые напрямую обрабатывают строки. В объектно-ориентированных языках строковые функции часто реализуются как свойства и методы строковых объектов. В функциональных языках и языках, основанных на списках, строка представляется в виде списка, поэтому все процедуры манипулирования списками можно рассматривать как строковые функции. Однако такие языки могут также реализовывать подмножество явных строковых функций.
Современные объектно-ориентированные языки, такие как C# и Java, имеют неизменяемые строки и возвращают копию (во вновь выделенной динамической памяти) для функции, которая манипулирует строками, в то время как другие, например C, манипулируют исходной строкой, если только программист не скопирует данные в новую нить.
В программировании строка — это любая конечная последовательность символов (т. е. букв, цифр, символов и знаков препинания).
Строка — это непрерывная последовательность символов или значений, например строка символов (последовательность символов) или строка двоичных цифр (последовательность двоичных значений). Он используется для представления текста, а не чисел. Он состоит из набора символов, которые также могут содержать пробелы и цифры.
Строка считается типом данных и часто реализуется как структура данных массива байтов или слов, в которой хранится последовательность элементов, обычно символов, с использованием некоторой кодировки символов. Строка может также обозначать более общие массивы или другие последовательности (или списки) типов данных и структур.
Когда строка появляется в исходном коде, она называется строковым литералом или анонимной строкой.
Строка — это конечная последовательность символов, выбранных из набора, который в формальных языках называется алфавитом.
Формальные строки могут иметь произвольную, но конечную длину, но длина строк в реальных языках часто ограничивается искусственным максимумом. Существует два типа строковых типов данных: строки фиксированной длины и строки переменной длины. Строки фиксированной длины имеют фиксированную максимальную длину, которая определяется во время компиляции, и используют один и тот же объем памяти независимо от того, нужен ли этот максимум или нет. Длина строк переменной длины не фиксирована произвольно и может использовать различные объемы памяти в зависимости от фактических требований во время выполнения. В современных языках программирования большинство строк являются строками переменной длины. Длина даже строк переменной длины ограничена количеством битов, доступных для указателя, и размером доступной памяти компьютера. Длина строки может храниться как отдельное целое число, которое может накладывать искусственное ограничение на длину, или неявно через символ завершения, обычно значение символа со всеми нулевыми битами, например, в языке программирования C.
Строковый тип данных — это тип данных, основанный на идее формальной строки. Типы данных различаются в зависимости от языка программирования или системы баз данных, но строки являются настолько важным и полезным типом данных, что они реализованы почти во всех языках программирования. В некоторых языках строки доступны как примитивные типы, а в других — как составные типы. Синтаксис большинства языков программирования высокого уровня допускает, чтобы строка, обычно заключенная в кавычки, представляла экземпляр строкового типа данных; такая метастрока называется литералом или строковым литералом. Например, некоторые языки, такие как C++, реализуют строки как шаблоны, которые можно использовать с любым типом данных.