Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Шифровальщик / Дешифровальщик на С++  (Прочитано 7093 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12139
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Шифровальщик / Дешифровальщик на С++
« Ответ #30 : 31 Декабря 2014, 22:26:38 »
alsoijw, я же расписал основные принципы подхода. Если менять только буквы на буквы, то структура текста (пробелы и знаки препинания) все одно сохранятся, что значительно облегчает анализ. Вполне допускаю что если подмена будет по некоторой последовательности, то задача (взлом шифра) все же будет решаема, хотя наверняка это будет сложнее взломать.

Собственно сохранять структуру - в любом случае - очень неправильно. Именно для этого в таких алгоритмах как DES, AES и им подобным (блочные шифры) всегда есть модули перестановок байт. Т.е. структура и последовательность входного текста принудительно разрушается. В поточных же шифрах шифруется поток без перетасовки последовательности. Но там работает та самая XOR-изация с бесконечной последовательностью псевдослучайных байт. Собственно получение этой последовательности может быть реализовано и блочным шифром на вход которому будет подаваться некий шаблон + счетчик кадров. Ключ используемый для формирования крипто-блока (который потом разворачивается в XOR-ключ кодирования потока). Но когда ты XOR-ишь с практически случайной последовательностью - то там одинаковый символ кодируется (XOR-ом) всегда разным байтом. И есть даже доказанная теорема что такое кодирование вполне криптостойкое. Но как я уже рассказывал и даже такое, надежное в теории кодирование может быть взломано элементарно если не придерживаться правила - "каждому пакету - свой ключ шифрования, и никогда один ключ не должен использоваться повторно".

Я приношу свои извинения за жуткий офффтоп, но полагаю поднятый ТС вопрос о шифре стоит некоторого углубления в тему. Оно просто необходимо, что бы вы сами пришли к правильному выводу: криптография - это не так то просто. И прежде чем изобретать свой велосипед шифр нужно очень тщательно разобраться в вопросах кодирования, а лучше воспользоваться готовыми алгоритмами (благо библиотеки то есть в любом языке).
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Шифровальщик / Дешифровальщик на С++
« Ответ #31 : 01 Января 2015, 00:00:42 »
Sly_tom_cat, с шифрованием не знаком. Правильно я понл - перемешивание отягащает взлом? Или делает его невозможным?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12139
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Шифровальщик / Дешифровальщик на С++
« Ответ #32 : 01 Января 2015, 03:35:48 »
Шифрованный текст/картинка/документ должны выглядеть практически одинаковы и практически не отличимы от случайной последовательности нулей и единиц. Любая структура прослеживаемая в шифрованном сообщении - это та ниточка, за которую тянут взломщики. Поэтому в нормальных шифрах перестановку байт делают просто обязательно причем по несколько раз (и по разным таблицам перестановки).

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

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

Собственно периодически так и происходит - выявляются уязвимости в казалось бы надежных алгоритмах (вспомните про ssl v2). И это один из основных мотивов оформлять крипто-библиотеки под типовые API, что позволяет быстро изменить алгоритм шифрования в работающей системе. Тот же ssl  подразумевает выбор механизма шифрования при установлении связи - выбираются алгоритмы в соответствии с их приоритетами, а те которые были скомпрометированы - просто исключаются из выбора.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Шифровальщик / Дешифровальщик на С++
« Ответ #33 : 05 Января 2015, 22:27:13 »
Извините что долго не отвечал, НГ и так далее... На счёт прочности шифра отвечу вот что: в мои 5 лет это был один из самых надёжных. И письма на нём были зашифрованы от моих сверстников, так что думаю с этим разобрались. На счёт самого процеса шифрования я так ничего и не понял. Поделюсь своим маленьким наблюдением: после записи при помощи функции getline() массив в нормальном состоянии. Проблемы только при попытке сменить его элементы. Что с этим не так?
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Шифровальщик / Дешифровальщик на С++
« Ответ #34 : 05 Января 2015, 23:59:11 »
Гриб_под_зонтом, возьми мой код и не морочь голову. Есть вопросы - отвечу.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: Шифровальщик / Дешифровальщик на С++
« Ответ #35 : 06 Января 2015, 03:06:04 »
Проблемы только при попытке сменить его элементы. Что с этим не так?
Выведи содержимое массива поэлементно - удивишься :)
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Шифровальщик / Дешифровальщик на С++
« Ответ #36 : 06 Января 2015, 13:10:20 »
Protopopulus, не совсем так. Нужно после каждого сивола что-то вставить - пробел, перенос каретки, табуляцию.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Шифровальщик / Дешифровальщик на С++
« Ответ #37 : 09 Января 2015, 15:29:08 »
alsoijw,
Твой код на vala, я про этот язык впервый раз лт тебя услышал так что не знаком с ним и хочу сделать тоже самое на плюсах
P. S.
Давно уже:
(Нажмите, чтобы показать/скрыть)
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Шифровальщик / Дешифровальщик на С++
« Ответ #38 : 09 Января 2015, 18:39:08 »
Гриб_под_зонтом, то что я вижу у тебя - это не более чем копипаста нескольких строк кода. По теме иди узнавай как это сделать на плюсах. На третьем питоне это можно сделать без лишних заморочек.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

 

Страница сгенерирована за 0.021 секунд. Запросов: 22.