Здравствуйте!
Подскажите алгоритм на следующее задание:
дана матрица размерности n*m (вводятся с клавиатуры)
дан набор точек этой матрицы(вводятся с клавиатуры)
это ключ
далее, входноее сообщение(фильтрация как в первом задании, файл. вв-выв) посл. записывается в строки матрицы...
но! те точки матрицы, которые были введены в ключе не должны заполняться
после заполнения матрицы — пройтись по спирали от правого нижнего угла матрицы до центра записывая символы в строку — это и есть закодированное сообщение.
раскодировать тем же ключом по томц же алгоритму.
как мне сказали, это из серии блочного кодирования, но информации по реализации или хотя-бы объяснений найти не могу.
Если можете — помогите. Очень срочно надо.
Здравствуйте, csit_shagrat, Вы писали:
_>Здравствуйте!
_>Подскажите алгоритм на следующее задание:
_>_>дана матрица размерности n*m (вводятся с клавиатуры)
_>дан набор точек этой матрицы(вводятся с клавиатуры)
_>это ключ
_>далее, входноее сообщение(фильтрация как в первом задании, файл. вв-выв) посл. записывается в строки матрицы...
_>но! те точки матрицы, которые были введены в ключе не должны заполняться
_>после заполнения матрицы — пройтись по спирали от правого нижнего угла матрицы до центра записывая символы в строку — это и есть закодированное сообщение.
_>раскодировать тем же ключом по томц же алгоритму.
_>как мне сказали, это из серии блочного кодирования, но информации по реализации или хотя-бы объяснений найти не могу.
_>Если можете — помогите. Очень срочно надо.
_>
Это блочный шифр перестановки, <off>очень ненадежный, вскрытие тривиально при достаточной для вычисления статистики текста длине сообщения</off>.
Соответственно, по заданной структуре "местами продырявленной матрицы" нужно вычислить перестановку (заполнить по строкам матрицу
номерами 1...M, где М — число "доступных для записи символов сообщения" ячеек, затем выписать их из этой матрицы по спирали).
Далее шифровать применением перестановки к одинаковой длины блокам текста. Расшифровывать — применением обратной перестановки.
Здравствуйте, dilmah, Вы писали:
А>>Это блочный шифр перестановки, <off>очень ненадежный, вскрытие тривиально при достаточной для вычисления статистики текста длине сообщения</off>.
А>>Соответственно, по заданной структуре "местами продырявленной матрицы" нужно вычислить перестановку (заполнить по строкам матрицу
А>>номерами 1...M, где М — число "доступных для записи символов сообщения" ячеек, затем выписать их из этой матрицы по спирали).
А>>Далее шифровать применением перестановки к одинаковой длины блокам текста. Расшифровывать — применением обратной перестановки.
D>ну вообще-то, большинство шифров так и работает: ключ кодирует перестановку над 64- или 128-битным алфавитом. Дальнейшая секурность достигается режимом кодирования (CBC etc).
В нормальных системах ключ кодирует ПОДстановку (биективное отображение в себя)
над ОЧЕНЬ большим алфавитом (мощность алфавита должна быть >> ресурсов по памяти
и вычислительной мощности). А ПЕРЕстановочные шифры принципиально ненадежны.
Перестановка -- это же просто линейный оператор с сильно специальной структурой
(разреженная матрица единичек). Линейным анализом ее и того.
Кстати, надежность простой подстановки даже в случае этого самого очень большого
алфавита тоже может пострадать от слишком большой длины сообщения, поэтому ее
чаще делают не простой а многоалфавитной (применяют гаммирование/свертку/модификацию
ключа и т.п.)