На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Шифрование текста NxN методом Решетки
    Буду очень признателен тем ,кто поможет реализовать эту задачку на С++. Или помогите найти исходники для шифрования решеткой...заранее благодарен

    Общие требования: программа, запущенная без параметров
    командной строки, должна выдавать краткую подсказку об
    использовании (Usage: ...)
    Должны распознаваться следующие параметры командной строки:
    -i <имя файла> - файл, содержащий исходную информацию
    -o <имя файла> - файл, содержащий отчет (параметр необязателен)
    Если файл отчета не указан, то отчет выводится на стандартный
    вывод. Дополнительные ключи определяются назначением программы.

    Считая текстовый файл разбитым на строки, содержащие NxN
    символов, реализовать шифрование\дешифрование "решеткой" NxN.
    Ключ передавать в виде дополнительного параметра в командной
    строке или, если параметр не указан, вводить по запросу
    с клавиатуры. MAX(N)=16, N кратно 2.
      тебе нужно сделать алгоритм получения решетки на основе пароля остальное все просто
        ???...В этом то и вопрос- как это сделать?Ведь мне нужно,что? А нужно мне работать с матрицами-решетками...Берем например матрицу 8х8, накладываем на текст(текст до этого момента уже отредактирован и выглядит как колонка шириной в 8 символов)...далее условно разделяем нашу большую матрицу на 4 "квадратика" размерностью 4х4 символа(четыре маленьких квадратика в одном большом)...после этого в каждом маленьком "квадратике" нумеруем яцейки особым образом: в первом квадратике(левый верхний) с лева направо, сверху вниз нумеруем каждую ячейку от 1 до 16, всего их 16 ///во втором квадратике(правый верхний) нумеруем 13-9-5-1-14-10-6-2-15-11-7-3-16-12-8-4....для простоты поверните исходную большую матрицу(проделай это на листе бумаги) на 90 градусов против часовой стрелки и ты увидишь что второй квадратик пронумерован как и первый но под углом 90 градусов...///нужно проделать эти операции и для третьего квадратика...поворачиваем матрицу на 180 градусов и нумеруем, в итоге 16-15-14-13-12-11-10-9-8-7-6-5-4-3-2-1///соответственно четвертый квадратик на 270 градусов, получаем 4-8-12-16-3-7-11-15-2-6-10-14-1-5-9-13 нумерацию каждой ячейки///таким образом получилась матрица 8х8 с разной нумерацией ячеек в каждом из 4 квадратом,из которых она состоит. Метод решетки требует следующего: в каждом из квадратиков нужно выбрать и выделить 4 разных ячейки, таким образом ,чтобы их номера не совпадали(например в первом 2-7-9-16 во втором 5-1-14-8 и.т.д). Эти выбранные ячейки(со своими значениями) и будут составлять ключ шифрования, он формируется из 16(4 из каждого квадратика) численных значений. Теперь рассмотрим текст на который была первоначально наложена наша большая матрица...берем из него первый элемент(букву или синтаксический знак или пробел) и подставляем в нашу матрицу. Тоесть помещаем элемент на то место в матрице которое мы выделили до этого (слева напправо, сверху вниз)...в нашем случае на ячейку с номером 2 (в первом квадратике), следующий в тексте элемент на ячейку с номером 5(уже во втором квадратике), следующий на на 1, потом на 7,потом на 14 и.т.д. (в зависимости от ключа случаи подстановки меняются).После заполнения всех особых ячеек буквами(16 мест) из текста, требуется повернуть эту матрицу на 90 градусов и проделать эту процедуру еще раз(заполняться уже 32 символа)...потом на 180 градусов(48 символов в матрице)...и в итоге на 270 градусов- после этого все ячейки матрицы заполнены буквами() в хаотичном порядке. Вернем матрицу в исходное положение. Получился зашифрованый текст...С помощью ключа этот порядок можно восстановить и получить первоначальный порядок букв()....Как же теперь это реализовать на С++?????? Я не знаю с чего начать...принцип работы знаю, но реализация подводит...помогите blink.gif
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,1938 ]   [ 16 queries used ]   [ Generated: 3.05.24, 08:38 GMT ]