Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > простенький алгоритм для шифрования |
Автор: Qawra 23.12.2009, 00:01 | ||
Написала " своими словами " простенький алгоритм для шифрования . Правда он на любом input даёт один и тот же output . Посмотрите пожайлуста "свежим взглядом " в чём проблема :
|
Автор: Reaver 24.12.2009, 09:18 | ||||||
Первое что бросается в глаза, эта строка:
Правильно написать
Метод String.toUpperCase() возвращает новую строку с преобразованным регистром, а не изменяет исходную. Только после этого изменения программа начинает вылетать с ошибкой. Да и решение слишком усложнено, вот так гораздо лучше, правда не учтена обработка пробелов:
|
Автор: Qawra 24.12.2009, 12:56 | ||
Спасибо ! Я попыталась пристроить удаление пробелов вместо Exception используя continue label . Но пока ничего не удаляется
|
Автор: Reaver 24.12.2009, 14:42 | ||
В данном случае можно добавить пробел в алфавит, либо просто пропускать символы, не входящие в алфавит:
|
Автор: Qawra 24.12.2009, 15:43 | ||||||||||||||
Я вынесла эту операцию в отдельный метод что бы не мучиться , буду вызывать её из enciphing и deciphing методов. Я думаю что для того что-бы расшифровать то что мы зашифровали нам надо просто поменять + на - в строчке
Или этого недостаточно ? Что-то я упустила в шифровании ..Компелируется , но результат выдаёт не тот который должен быть
на строчку
выдаёт "TDDDDDDDDDDDDDDD" это он даже не заикается ... это он только первую букву правильно шифрует ![]() trimString работает правильно , все пробелы удаляет Я попробовала написать simple substitution алгоритм
Он у меня получился каким-то подозрительно простым , И строчка
Говорит что не может найти метод indexOf key для этого алгоритма я запрашиваю у пользователя как string , затем буквы из него (без повторов) переписываю в keyArray и добиваю его до размера английского алфавита с помощью этого самого алфавита Смотрится правда достаточно запутано :
не знаю будет ли работать потому что строчка
в самом алгоритме пока не скомпелировалась по непонятной причине |
Автор: Qawra 24.12.2009, 19:50 | ||
Ошибку с trim() и trimString(String input) я исправила . NetBeans 6.7.1 у меня установлен , но я в нём только начинающий пока программист ![]() Могу что-нибудь перепутать . Здесь выделена эта строчка, в первом классе она скомпелировалась без проблем
|
Автор: Reaver 24.12.2009, 20:14 |
У вас переменная alphabet имеет тип char[], а обращаетесь к ней как к типу String. |
Автор: Qawra 24.12.2009, 23:13 | ||||
Да , так оно и оказалось .Я уже переделала её в String ![]() Делаю сейчас setKey для шифрования с субституцией . Удаляются из String пробелы и дубликаты букв . То что остаётся становиться началом нового алфавита размером в 26 букв. Пустые места заполняются английским алфавитом начиная с буквы A.
Непонятно почему после удаления пробелов и дубликатов буквы оказываются в алфавитном порядке . А вместо английского алфавита впечатывается буква Z . Например :
печатает EMNORTUVZ Мне кажется что inner loops надо переставить местами чтобы английский алфавит допечатывать в key. Ну а порядок букв видимо результат использования TreeSet ...? |