C++, симметричное шифрование [закрыт]

197
14 февраля 2019, 21:30

Хочу написать шифратор для файлов, интересуют симметричные шифрования, кроме xor. Желательно с ссылками на примеры.

Answer 1

Шифрование это как раз самая простая часть, ее даже писать самому не нужно. Для любого шифра существует так называемая "reference implementation". Это реализация шифра, обычно написанная на C, от авторов шифра. Для всех распространенных шифров reference implementation находится в public domain, то есть можете ее использовать как хотите и даже спасибо авторам необязательно говорить. Хорошим выбором являются AES, Twofish, Serpent, для них существуют масса реализаций на разных языках. После того, как вставите код в свою программу, обязательно проверьте шифр на "test vectors", которые также существуют для любого шифра. Это просто триады plaintext/key/ciphertext. Проверять по тестовым векторам нужно обязательно, потому что если есть хоть малейшая возможность ошибиться, то так оно и будет.

То есть алгоритм такой: допустим, хотите использовать Twofish. Набираете в гугле "twofish reference implementation", идете на сайт Шнайера, тащите оттуда все что нужно, и ваяете свою утилиту.

Проблемы у вас будут не с шифром. Для приличной программы шифрования файлов собственно шифр занимает в районе 0,5% кода и, как я уже сказал, писать его необязательно. Основные проблемы там совершенно в другом, и вы с ними, несомненно, встретитесь. Разработка формата файла (нетривиальная задача), управление ключами и проблема их верификации (очень нетривиальная задача), надежное удаление исходных файлов (еще более нетривиальная задача, которая во многих случаях вообще не решается). В общем, успехов.

READ ALSO
Создание очереди в с++

Создание очереди в с++

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

175
Segmentation fault при добавлении объекта в unordered_map

Segmentation fault при добавлении объекта в unordered_map

Столкнулся с такой проблемой, мне необходимо записать абстрактный класс в unordered_map для дальнейшего использованияОднако, при попытке это сделать...

174
как передать двумерный массив из array.cpp

как передать двумерный массив из array.cpp

Есть два файла Не считая хэйдера arrayh , в ней только одна строчка:

180
ошибка в логическом выражении

ошибка в логическом выражении

В блоке if ошибка, но я не могу ее найтиВот текст ошибки:

168