| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Delphi: Полиалфавитный шифр Виженера |
| Автор: Solominka 24.10.2010, 13:59 |
| В общем возникла такая проблема: нужно написать программу на Делфи с использованием этого самого полиалфавитного шифра Виженера. НО! Это не тот алгоритм, который на каждом шагу валяется. Тут немного другой принцип и я если честно не очень то понимаю как это реализовать. Вот так прога должна выглядеть в итоге: http://ipicture.ru/Gallery/Viewfull/1698686.html Помогите пожалуйста реализовать! |
| Автор: Solominka 24.10.2010, 16:40 |
| Неужели даже с алгоритмом совсем некому помочь? :( |
| Автор: amsoft 24.10.2010, 17:36 |
| А что конкретно у тебя не получается? Ничего сложного не вижу. В качестве таблицы для шифрования используй компонент TStringGrid, программно заполняй ее буквами и в процессе шифрования пробегай по всему тексту, подставляя соответствующие буквы из таблицы. Или тебе готовый код нужен? |
| Автор: Solominka 24.10.2010, 17:42 | ||
| Ну компоненты то я и так вижу, какие нужны... Только я без понятия, что сначала объявить и как это заполнить... Я не понимаю, как именно прога работать должна... Т.е. что и из каких соображений перебирать...
А кому ж он не нужен! =__= Но на готовый код я не рассчитываю, ибо это за меня писать никто не будет. Мне бы хотя бы объяснили, что и как написать, а там я уж сама бы как-нибудь может написала. Ибо мне даже сам принцип шифрования не ясен. |
| Автор: Specialistvlad 24.10.2010, 17:49 |
| Аналогично, ничего сложного нету. Тебе не программу нужно написать, а сначала алгоритм составить. Исходя из твоего сообщения, кажется, что ты просто не хочешь этого делать. Алгоритм довольно прост. Так на вскидку: есть таблица, с исходными данными, по пересечению ячеек нужно находить нужную букву и подставлять её в цикле. |
| Автор: amsoft 24.10.2010, 18:04 |
| Составляем таблицу для шифрования: первая строка - алфавит (можно заполнить программно, пробежавшись по ячейкам и заполняя их символами, в этом тебе может помочь функция Chr(x) - первый символ будет Chr(224) - буква 'а', второй - Chr(225) и т.д. до Chr(255) - буква 'я') Остальные строки заполняешь аналогично, только начинать будешь не с символа Chr(224), а с символа 'ш' (код буквы можно узнать с помощью функции Ord('ш')), таким образом вторая ячейка будет содержать символ Chr(Ord('ш')+1) и так далее, пока не дойдешь до 'я', затем начинаешь опять с Chr(224)... Надеюсь, выразился правильно. Далее можно переходить непосредственно к шифрованию. |
| Автор: Solominka 24.10.2010, 18:05 | ||||
в каком цикле? =__=
Ну не понимаю я... НЕ ПОНИМАЮ! уж извините... Добавлено через 1 минуту и 6 секунд amsoft, кажется начинаю понимать, спасибо) |
| Автор: amsoft 24.10.2010, 18:19 |
| Solominka, если будут вопросы, выкладывай сюда свой код, будем разбираться |
| Автор: Solominka 24.10.2010, 19:48 | ||
| В общем нашла похожий программный код, попыталась преобразовать, но запуталась и заполняет оно всё не совсем так, как надо... Вот исходник для наглядности: http://www.sendspace.com/file/9qgieb Сам код:
|
| Автор: Specialistvlad 24.10.2010, 23:56 |
| Да не нужно чужое находить. Напиши свое, поймешь хоть тогда. А совет как понять. Возьми листочек и пиши посделовательность действий, которая по твоему мнению нужна для выполнении программы. Например. Первое: Выставить ряд букв исходя из шифра. Следующее, и так далее... И только когда у тебя будет правильный алгоритм, ты с легкостью поймешь, что делать. Давай вместе составлять, но только если это не подразумевает по собой напиши мне.... |
| Автор: Solominka 25.10.2010, 00:24 |
| Specialistvlad, писать уже ничего не нужно (как минимум потому, что написано уже, выше). Нужно просто сделать так, чтобы из четырёх StringGrid-ов всё выводилось в один, и всё =__= Чем я сейчас и занимаюсь (и потихоньку получается). Ибо писать с нуля - не располагаю временем, увы и ах, т.к. для этого я Делфи знаю довольно плохо, что уж тут скрывать. И в данном случае при таком раскладе, мне быстрее доделать немного чужой исходник, чем пытаться составить свой алгоритм, который я пойму неизвестно после какой по счёту попытки, потом объявить кучу функций и не запутаться в них же, родимых... Извините, но когда авраал - тут не до качества, к сожалению... Благодарю за предложенную помощь с алгоритмом, но обратись я раньше хотя бы дня на 3 - это возможно, имело бы для меня какой-то реальный смысл. |
| Автор: casinosoftguru 25.10.2010, 13:40 |
| советую повнимательнее рассмотреть пример там левые какие то переменные типа Sms или brr они с твоим скриншотом никак не сходятся.. достаточно будет расписать не на бумажке а в комментариях к коду каждое действие и тогда станет все понятно что тебе нужно из этого кода а что не нужно) |
| Автор: Solominka 25.10.2010, 14:02 |
| casinosoftguru, просто прога была с 8-ю гридами, а надо "собрать" всё в 4 грида, плюс порядок слегка другой... А принцип тот же)) А переменные эти там как бы нужны))) Короче из этого: http://ipicture.ru/Gallery/Viewfull/1713919.html надо сделать это http://ipicture.ru/Gallery/Viewfull/1698686.html. Только и всего |