Простая реализация шифрования в [закрытом] C

Я использовал хорошую реализацию DES C++ общественного достояния прежде, но теперь мне нужна некоторая простая, базовая, быстрая криптография для встроенной системы.

Это не должно быть небьющимся, но это действительно должно мешать случайному хакеру (т.е., ничто, что могло использоваться за деньги или хищение личных данных, но другие персональные данные, переданные на картах памяти, которые могли потеряться или попасть в неправильные руки).

Из-за ограниченной памяти на этом процессоре, я предпочел бы что-то, что может закодировать в дискретных блоках (512 байтов или меньше).

Проект не является открытым исходным кодом и не будет пользоваться библиотеками, которые я знаю, ограничивает опции далее - общественное достояние, являющееся лучшим, но BSD/apache/etc, вероятно, приемлемый...

Я не решаюсь прокручивать свое собственное (как все должны быть).

- Adam

9
задан Adam Davis 6 September 2008 в 15:37
поделиться

4 ответа

Если Вы просто ищете путаницу, XOR с секретной константой является столь маленькой реализацией, как Вы найдете. Это также было бы также тривиально для повреждения, начиная с его уязвимого для частотного анализа для поиска наиболее распространенных английских букв.

Если бы Вам нужен более сильный алгоритм, я рекомендовал бы смотреть на шифр, который имеет тенденцию быть маленьким и быстрым. Это действительно все еще требует памяти для таблиц, но надо надеяться это будет работать на Ваше приложение.

Bruce Schneier явно поместил алгоритм Шифра в общественное достояние, отрицая патенты. Можно получить его реализацию в C (и другие реализации также) от его сайта. Этот источник не несет уведомление об авторском праве. Я подозреваю, что исходный код также находится в общественном достоянии, но немного больше проверки может быть необходимым.

7
ответ дан 4 December 2019 в 15:30
поделиться

RC4 прост и быстр.

3
ответ дан 4 December 2019 в 15:30
поделиться

Тот же человек, который выпустил реализацию DES C++ также, выпустил C Rijndael Алгоритм шифрования - я должен был ввести по абсолютному адресу вокруг его веб-сайта укус больше, Крошечный Алгоритм шифрования (научная работа здесь) также имеет очень маленькое место реализации C.

Шифр выглядит хорошим, и вероятен лучший из этих трех до безопасности.

Я начнусь с ЧАЕМ (маленький код и объем потребляемой памяти), но перенесу его так, я могу переместиться в другой алгоритм позже в случае необходимости. Это имеет известные слабые места в своих более ранних реализациях, но для этого проекта могло бы даже быть излишество.

- Adam

2
ответ дан 4 December 2019 в 15:30
поделиться

Вы могли использовать генератор Псевдослучайного числа (PRNG) для генерации повторяемой последовательности слов, который Вы затем XOR с соответствующим словом в Вашем потоке данных. (Передатчик и получатель должны знать заранее, что параметры раньше генерировали псевдослучайную последовательность.)

Этот подход не является небьющимся, но это - шаг от использования константы для XOR-луга - и PRNGs очень просты реализовать, обычно состоящий из одного умножения и операции по модулю для каждого слова.

1
ответ дан 4 December 2019 в 15:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: