Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 07.11.2017
Сообщений: 49
1

Выход за рамки индекса при шифровании/дешифровании строки

19.12.2018, 00:17. Просмотров 1116. Ответов 4
Метки нет (Все метки)

Доброго времени суток! Создал шифратор/дешифратор методами ROT и атбаш.

Во время проверки столкнулся с некоторыми проблемами:

1. При шифровке методом ROT в одном ключе и последующей дешифровке полученной строки в другом ключе получаю ошибку "Индекс находился вне границ массива"
2. При шифровке методом Атбаш строки (например, больше двух слов) также получаю ошибку "Индекс находился вне границ массива".

Подскажите, пожалуйста, как можно решить эти проблемы?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2018, 00:17
Ответы с готовыми решениями:

Выход индекса за рамки массива
Вопрос следующий : После нажатия на форме кнопки несколько раз возникает ошибка выхода индекса за...

UserControl выход за рамки родителя
Подскажите, как сделать так, чтобы контрол мог выходить за рамки родителя. Что-то наподобие как...

Ещё раз о шифровании/дешифровании
Доброй вечер! Второй день сижу над шифрованием передачи данных из приложения delphi xe7 скрипту...

Выход за рамки массива
Всем добра! Допустим есть массив: int a={0,0,0,0,0,0,0,0} То почему если мы выведем...

4
174 / 139 / 92
Регистрация: 30.07.2013
Сообщений: 555
19.12.2018, 09:31 2
Не-шарю,

Цитата Сообщение от Не-шарю Посмотреть сообщение
Подскажите, пожалуйста, как можно решить эти проблемы?
убедитесь, что Вы не выходите за пределы массива.

Например, массив int[] array = new array[] {34, 35, 36, 37} состоит из четырёх элементов, но его индексы 0, 1, 2, и 3.
При попытке обратиться к элементу с индексом 4 возникнет ошибка OutOfRangeException
0
0 / 0 / 1
Регистрация: 07.11.2017
Сообщений: 49
19.12.2018, 10:13  [ТС] 3
Можете, пожалуйста, показать на моей работе? Что-то не допру
0
Вложения
Тип файла: rar Shifrat.rar (45.0 Кб, 1 просмотров)
174 / 139 / 92
Регистрация: 30.07.2013
Сообщений: 555
19.12.2018, 11:18 4
Лучший ответ Сообщение было отмечено Не-шарю как решение

Решение

Не-шарю,

Строка 54:

C#
1
2
3
4
for (int i = 0; i < decoder.Length; i++)
                    {
                        code += alfa[(alfa.IndexOf(decoder[i]) - key) % 80];
                    }
в первой итерации цикла i = 0, и результат вычисления (alfa.IndexOf(decoder[i]) - key) % 80 становится меньше нуля.
Вы обращаетесь к несуществующему элементу массива alfa
1
0 / 0 / 1
Регистрация: 07.11.2017
Сообщений: 49
20.12.2018, 21:36  [ТС] 5
meridbt, спасибо за помощь! С атбаш вопрос решен (лоханулся, алфавит до конца не дописал), а вот с ROT не знаю, как быть. Как Вы объяснили, по циклу идет обращение к индексам строки. А вот как быть с 1 проблемой? Там при изменении ключа (в дешифровке) в большую сторону соответственно меняется счисление индекса, и при неподходящем программа вылетает. Как можно сделать, чтобы она и не вылетала, но выдавала хоть какой-то дешифр (естественно не подходящий)?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2018, 21:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Выход за рамки массива
Здравствуйте. Подскажите, пожалуйста, как такое, вообще может быть. Написал программу. ...

Шифр RSA, ошибка при дешифровании
Доброго времени суток, есть готовый код на java, реализация шифра RSA. Шифрование проходит без...

Ошибка при дешифровании, алгоритм RSA
Здравствуйте! Пишу приложения сервер и клиент. В приложениях поставил шифрование RSA, но возникли...

Выход индекса из диапазона
string key = KeyBox1.Text; string alph = &quot;абвгдежзийклмнопрстуфхцчшщъыьэюя&quot;; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.