|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.04.2008, 19:11 | #1 |
Пользователь
Регистрация: 17.02.2008
Сообщений: 53
|
Аффинная система подстановок Цезаря
Подробности о методе можно узнать например тут:
http://crypto-r.narod.ru/glava2/glava2_3.html 1) сделал проверку на ввод чисел а и б (чтоб взаимно простыми были) 2) так же сделал шифрование по этому алгоритму, e=a*t+b Код:
а теперь нужно каким то образом сделать обратное, а вот как немогу придумать, потому прошу о помощи |
01.04.2008, 20:00 | #2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Вы вот это сами писали?
kod:=ord(s[i])*a)+b А обратную операцию "придумать" не можете? (kod-b)/a Впредь пишите все сами и все будет тип-топ... |
01.04.2008, 20:21 | #3 |
Пользователь
Регистрация: 17.02.2008
Сообщений: 53
|
да, сам писал все, щас пока придумал выход но очень запутанный через массивы.. постоянно куча ошибок
а то что вы написали пробовал - не помогает сами ведь посмотрите: kod:=ord(s[i])*a)+b допустим s[i]=200, а=5,б=9 тогда: код:=200*5+9=1009, потом постоянно начинает вычитаться 256, пока не будет ниже чем 256 т.е. 1009-256-256-256=241 А обратную операцию "придумать" не можете? (kod-b)/a = (241-9)/5=46,4 что <>200 |
01.04.2008, 20:26 | #4 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Код:
На всякий случай. Не нужно помещать зашифрованный текст в memo. Если есть желание на него посмотреть, лучше сохранить в файл. Последний раз редактировалось alexBlack; 01.04.2008 в 20:39. |
01.04.2008, 20:44 | #5 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Цитата:
Ведь нужно учитывать, что лишние символы образуются при каждом вычитании 256-ти во время кодирования). Посмотрите ваш код: while j>256 do j:=j-256; s[i]:=chr(j); end Последний раз редактировалось mihali4; 01.04.2008 в 20:58. |
|
01.04.2008, 20:52 | #6 |
Пользователь
Регистрация: 17.02.2008
Сообщений: 53
|
во, через массивы получилось сделать!
вот только с ошибкой при некоторых ключах например 20/21 при создании массив заметил что есть повторяющееся символы например символ с номером 50 шифруется как 253 т.е. 1021-256*3 а так же с номером 242, т.е. 4861-256*18=253... вполне вероятно что есть еще ошибки Последний раз редактировалось Karyuudo; 01.04.2008 в 21:32. |
01.04.2008, 21:43 | #7 | ||
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Цитата:
20*50+21=1021, т.е. a*50+b -> a = 20 Но, ведь 20 и 256 не взаимно простые, поэтому и повторы Цитата:
В нашем случае m = 256 Последний раз редактировалось alexBlack; 01.04.2008 в 21:51. |
||
01.04.2008, 21:53 | #8 |
Пользователь
Регистрация: 17.02.2008
Сообщений: 53
|
спасибо! невнимательный я.. все думаю что тут не то... так оказывается буквы перепутал
|
07.12.2008, 01:46 | #9 |
Регистрация: 27.05.2008
Сообщений: 9
|
Решите пожалуйста мне задачку по аффинной подстановке цезаря. надо зашифровать фразу.
почти блондинка
|
10.01.2009, 07:03 | #10 |
Пользователь
Регистрация: 10.05.2008
Сообщений: 36
|
Аффинная система подстановок Цезаря - Функция для шифрования. Будет работать и в D2009.
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Отображение в форме и таблице двух столбцов подстановок | smoky | Microsoft Office Access | 5 | 01.07.2008 09:27 |
Проблема со столбцом подстановок. | Hellell | Microsoft Office Access | 1 | 08.01.2008 02:13 |
Алгоритм Цезаря | ***СкаЙ*** | Помощь студентам | 2 | 27.04.2007 02:40 |
Помогите с алгоритмом Цезаря!!! Пожалуйста | ***СкаЙ*** | Помощь студентам | 6 | 05.04.2007 11:10 |