Как стать автором
Обновить

Комментарии 26

Да приношу извинения что в конце наехал на сеть Фейстеля при N = 32 раундах, уже лучше зашифровывается изображение. Но все равно проглядывается рабочий стол. При использовании CBC и CFB для 8 раундов на картинках зашифрованных просто белый шум — ничего не понятно
> Условия просты — не использовать сторонние библиотеки.
это нужно чтобы разобраться как оно работает или есть практическая необходимость?

Код сложно читать. Для начала можно выложить на гитхаб, там хотя бы нормальная подсветка синтаксиса. Потом непонятно почему такая адская смесь си и си++
Тут итераторы а в другом месте уже файлы через FILE.
С ресурсами все плохо ( массивы выделяются, память не освобождается ).

Ну есть странные места
        char str_[N + 1];
        memset(str_, 0, N);
        str_[N] = '\0';

Вначале обнулили его первые N-1 элементов, а потом еще и последний тоже.

На мой взгляд главная проблема кода что он очень плотный, и смешанный. В смысле тут и шифрование, и передача данных по сети, создание потоков, и снятие изображения. В идеале если разделить все это на разные куски то можно и тестировать отдельно и чистота кода должна улучшиться.
это нужно чтобы разобраться как оно работает или есть практическая необходимость?

Чтобы на форум код поместился в случае тупика и поиска ошибки, я ж это проговорил
Тут итераторы а в другом месте уже файлы через FILE.

И по остальным вещам, да надо код вылизать, убрать лишнее

Вас, возможно, интересует, почему ваша статья заминусована? Я кнопки голосования не трогал, но позволю себе высказать гипотезу.
Формулировка задачи выглядит очень странно. Что такого особенного в передаче файлов по сети? Почему без сторонних библиотек? Зачем шифровать? Почему не взять более традиционные алгоритмы?
Ну и технический уровень реализации тоже не высок. Простите за сравнение, но у меня студенты третьего курса не самого профильного факультета на сокетах посложнее вещи делают. Не говоря уже про то, что они делают с библиотеками.
Это вовсе не означает, что вы не можете написать о своём опыте на хабр, но нужно трезвее оценивать уровень и соответственно менять фокус с того, что вы сделали на то, почему. Может быть, вы учитесь программировать и хотите поделиться своей историей? Или делаете сложную техническую систему, где программирование лишь неважная деталь? При нужном ракурсе вы сможете получить тут поддержку и советы, а не минусы.

Вас, возможно, интересует, почему ваша статья заминусована?

Меня это мало волнует, я накидал текст минут за 20 при уже сыроватом коде.
Формулировка задачи выглядит очень странно.

Да.
Что такого особенного в передаче файлов по сети? Почему без сторонних библиотек? Зачем шифровать? Почему не взять более традиционные алгоритмы?

Особенно то, что можно смотреть рабочий стол. Без сторонних потому что на форуме врятли кто-то будет линковать код со сторонними библиотеками. И без этого помогали два с половиной инвалида. А вы хотите гонять по сети интернет скриншоты рабочего стола не зашифрованными? Приведите пример любого традиционного алгоритма.
Простите за сравнение, но у меня студенты третьего курса не самого профильного факультета на сокетах посложнее вещи делают

А если бы я делал что-то посложнее, во первых не сделал бы, во вторых кода было бы много.
Или делаете сложную техническую систему, где программирование лишь неважная деталь?
Программирование такое себе занятие, когда копнешь глубже остальных приходится искать и не всегда находить примеры и решения. Да и по образованию я тоже не спец в этих областях.
Меня это мало волнует, я накидал текст минут за 20 при уже сыроватом коде.

Зачем кидать на хабр сыроватый невнятный текст?

Особенно то, что можно смотреть рабочий стол.

Запакуйте файл в zip c паролем и передавайте. Зачем совмещать передачу информации с шифрованием, тем более что вы совершенно не рубите в теме алгоритмов шифрования, о чем свидетельствует плохо зашифрованный вами файл.

Без сторонних потому что на форуме врятли кто-то будет линковать код со сторонними библиотеками.

На форуме — вряд ли. Так и шлите этот текст на форум. А на Хабр, будьте любезны, подучитесь чему-нибудь и поделитесь полезным а не сырыми недоделками.
Вдобавок «без сторонних библиотек», но вместо программы вы ТУПО ЗАПУСКАЕТЕ FTP клиент. ЗАЧЕМ?

А вы хотите гонять по сети интернет скриншоты рабочего стола не зашифрованными?

Это вы хотите их гонять и гоняете. Кроме того вообще публикуете скриншот незашифрованным.

Приведите пример любого традиционного алгоритма.

Шифр Виженера реализуется в два щелчка.

Он хочет что бы его код скомпилировали и нечаянно запустили.
Потому что считает, что разработчики скрывают от него полезные программы. Поэтому хочет увидеть их рабочие столы. Без шуток.

Эх домоскан ;-)
Программирование такое себе занятие, когда копнешь глубже остальных приходится искать и не всегда находить примеры и решения.

Программирование — это не поиск примеров в Интернете.

Для плюсов есть вещи типа Conan, которые решат проблему со сторонними библиотеками.
Если совсем тяжело — делайте сабмодули, подавляющее большинство библиотек идут в исходниках, собрать их перед сборкой основного «продукта» совершенно не проблема, даже кросс-платформенно, 2021 год на носу, а вы всё с memset балуетесь.

В чем особенность передачи именно картинки? Любой файл прекрасно передается, ведь его можно представить в виде байтового потока, и запихнуть в сокет.


За шифрование — здесь явно смешение абстракций. Отдельный код должен шифровать-дешифровать. И совершенно другой — отправлять. Тогда можно будет использовать разные алгоритмы шифрования, и передавать эти же зашифрованные файлы не только сокетами.


Ну и субъективно — в вашей статье я не вижу уважения к читателю. Вы небрежно формулируете задачу, небрежно описываете решение, и статья тяжелее читается. Ну и судя по вашим ответам на комментарии вы плохо воспринимаете конструктивную критику. Если хотите расти как программист, вам нужно фиксить эти качества.

Поддержка криптографии давность как в Windows, так и в Linux и без проблем доступна из юзерспейса через стандартные api операционной системы без сторонних библиотек. К чему вручную все писать? Ну если уж писать, то что-то интересное, а не голую сеть Фейстеля. Более того, ваш шифр не устойчив к линейному криптоанализу и множеству других атак, в первую очередь из-за того, что функция F вносит слишком мало нелинейности. Про слабую дифузию вообще молчу)

Recovery Mode? Seriously?

«по-мойму» — этапять
как и весь текст поста код надо целиком на говнокод.ру отправлять.
итого: КГ\АМ

Странная постановка задачи и странное решение. Совсем без библиотек не получится всё равно, можете посмотреть, сколько всего разного прилинковалось к вашему бинарнику.
ЗЫ: писать простыню г-кода только ради убедиться, что он собирается и работает, лично мне было бы лениво.

Больше года прошло с момента вашей первой публикации. Обе статьи в глубоком минусе. В обеих статьях в комментариях открыто отмечается ваша непрофпригодность.
Вы принципиально отказываетесь от самообразования или это некая форма протеста?

Вы на его вопросы на Тостере посмотрите. Уровень ниже плинтуса и нулевой прогресс.
Судя по вопросам, постановке задач и их решениям автору должно быть не 28лет (что можно предположить из username), а примерно в 2 раза меньше. Я вот именно в этом возрасте страдал чем-то подобным, правда на Delphi.
Устал уже самообразовываться
Так может бросить это чёртово ИТ? В нём же обязательно самообразовываться всё время.
Так я и не начинал, это так баловство
Если на форум краснодеревщиков вывалить видосик «как я сделаль скворечник» — там тоже не одобрят. А если после скворечника похвастаться ещё и синичником… :D
Тогда стоит убрать «Инженер-программист» из профиля, как очевидную неправду.
Можно работать не печатая код, чем я и занимаюсь, так что все тру
Можно, только это работа не инженера-программиста.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории