Файл: Особенности и примеры использования массивов при разработке программ (Языки программирования высокого уровня).pdf
Добавлен: 28.03.2023
Просмотров: 195
Скачиваний: 2
int[] numberArray = new int[20];
for(int i = 0; i < 20; i++){
numberArray[i] = i; // }
//вывод всех значений массива в консоль
for(int i = 0; i < 20; i++){
System.out.println((i+1) + "-й элемент массива = " + numberArray[i]);
}
Размер массива не всегда очевиден, поэтому для того, чтобы его узнать следует использовать свойство length, которое возвращает длину массива (при условии, что размер массива равняется трем).
myColors.length;
Данный код поможет узнать, что длина массива myColors будет равна трем.
Например, задано пять чисел, необходимо найти минимальное значение массива
int[] numbers = {-7, 9, 5, -3, 7};
int mins = numbers[0];
for(int i = 0; i < numbers.length; i++){
if(mins>numbers[i]) mins = numbers[i];
}
System.out.println(mins);
Таким образом, была дана характеристика массивов и использование их в программах циклической структуры.
3. Разработка программы
3.1. Характеристика алгоритма
Алгоритм шифрования RC4 представляет собой широко используемый потоковый шифр, применяемый в протоколах TLS (защита Internet-трафика) и WEP (защита WLAN-сетей). Несмотря на высокую скорость работы и простоту реализации, алгоритм шифрования RC4 обладает некоторыми слабостями, из-за которых в целях информационной безопасности не рекомендуется его использовать. Общая схема алгоритма RC4 представлена на рис. 1.
При некоторых условиях данный шифр является очень уязвимым на взлом. Например, когда не выполняется отброс начальных байтов гаммирующей последовательности или когда используются связанные или неслучайные ключи. Компания Microsoft рекомендует при возможности отключать RC4.
Алгоритм шифрования RC4 позволяет сгенерировать псевдослучайный поток битов, называемый гаммирующей последовательностью или гаммой. Как и в любом другом потоковом шифре, шифрование в RC4 выполняется при помощи использования специализированной операции XOR над открытым текстом и гаммой.
Расшифровка выполняется при помощи операции XOR над шифротекстом и гаммой. Таким образом, самым принципиальным моментом в алгоритме шифрования RC4 является то, каким образом будет генерироваться гамма.
В самую первую очередь пользователь должен создать секретный ключ, длина которого, обычно, должна находиться в пределах от 5 до 32 байт. Затем происходит непосредственная инициализация S-блока (Key-scheduling algorithm).
Рисунок 1 – Общая схема алгоритма RC4
Сначала берётся массив из 256 байтов (S-блок) и последовательно выполняется заполнение целыми числами от 0 до 255. Потом выполняется перемешивание данного массива. Причем, перемешивание зависит только от используемого ключа в том смысле, что результат будет перемешиваться и всегда жёстко детерминирован после выбора ключа.
3.2. Описание алгоритма
Ядро алгоритма шифрования состоит из функции генерации ключевого потока. Эта функция генерирует последовательность битов, которая затем объединяется с открытым текстом посредством суммирования по модулю два.
Дешифрация состоит из регенерации этого ключевого потока и суммирования его с шифрограммой по модулю два, восстанавливая исходный текст.
Другая главная часть алгоритма – функция инициализации, которая использует ключ переменной длины для создания начального состояния генератора ключевого потока.
Алгоритм шифрования:
– функция генерирует последовательность битов (ki), являющиеся основанием для дальнейшей обработки данных.
– затем последовательность битов посредством практического использования операции «суммирование по модулю два» (xor) объединяется с открытым текстом (mi). В результате получается шифрограмма (ci): ci=mi+ki.
Алгоритм расшифровки:
– повторно создаётся (регенерируется) поток битов ключа (ключевой поток) (ki).
– поток битов ключа складывается с шифрограммой (ci) операцией «xor». В силу свойств операции «xor» на выходе получается исходный (не зашифрованный) текст (mi): mi=ci+ki=(mi+ki)+ki
RC4 – фактически класс алгоритмов, определяемых размером его блока обработки информации. Этот параметр n является размером слова для алгоритма шифрования данных. Обычно, n = 8. Для повышения безопасности необходимо увеличить эту величину. Внутреннее состояние RC4 состоит из массива размером 2n слов и двух счетчиков, каждый размером в одно слово.
Массив обозначается как S-бокс. Он всегда содержит соответствующую перестановку 2n возможных значений слова. Два счетчика обозначены через i и j.
Внутреннее состояние RC4 представляется в виде массива размером 2n и двух счётчиков. Массив известен как S-блок, и далее будет обозначаться как S. Он всегда содержит перестановку 2n возможных значений слова. Два счётчика обозначены через i и j.
Инициализация RC4 состоит из двух частей:
– инициализация S-блока;
– генерация псевдо-случайного слова K.
3.3. Разработка программной системы
Практическая реализация алгоритма шифрования была выполнена по средствам использования средств языка программирования С++. Для практической реализации алгоритма шифрования RC4 был создан соответствующий класс программный class RC4_CRYPTS{} для реализации программной системы шифрования
class RC4_CRYPTS{
byte LINE[256];
unsigned int i,j;
inline void Swaps(int, int);
public:
byte GetXors();
void Inits(byte *key, int len);
void Crypts(byte *data, int size);
};
Процедура инициализации входного массива данных представлена следующей функцией
void RC4_CRYPTS::Inits(byte *key,int len)
{
if(!len) len=strlen((char*)key);
for(i=0; i<256; i++) LINE[i]=i;
for(i=j=0; i<256; i++) {
j=(j+LINE[i]+key[i%len])&255;
Swaps(i,j);
}
i=j=0;
}
Непосредственная перестановка реализована в виде функции Swaps()
void RC4_CRYPTS::Swaps(int i,int j)
{
byte t=LINE[i]; LINE[i]=LINE[j]; LINE[j]=t;
}
Результат выполнения разработанной программы представлен на рис. 2, рис. 3.
Рисунок 2 – Результат выполнения программы
Рисунок 3 – Результат выполнения программы
Таким образом, в процессе выполнения третьего раздела были получены следующие результаты. Была представлена программная разработки для демонстрации работы с массивами на языке программирования С++.
ЗАКЛЮЧЕНИЕ
Выполняя данную работу были получены следующие результаты. Возможности современных объектно-ориентированных языков программирования высокого уровня позволяют реализовать практически любую задачу. Языки программирования используют все новые и новые функции и проведенный анализ в данной работе позволит определить, в сравнении, особенности следующих языков программирования: C#; Java; C++.
Язык программирования C# был разработан как язык программирования прикладного уровня для CLR и, как таковой, зависящий от возможностей самой CLR. Это касается системы типов C#, которая отражает BCL.
Существует несколько реализаций объектно-ориентированного языка программирования C#: проект Mono включает в себя реализацию языка программирования C# с открытым исходным кодом; проект DotGNU также включает компилятор языка программирования C# с открытым кодом; реализация языка программирования C# в виде компилятора csc.exe была включена в состав платформы .NET Framework.
Анализируя отличия языка программирования C# от Java было установлено, что в языке программирования C# в дополнение к примитивным типам передаются по значению структуры (struct), остальные типы передаются по ссылке.
В обоих языках программирования методы определяются через функции класса. Тело метода располагается внутри описания класса. Также, были проанализированы возможности языков программирования по работе с массивами и циклами.
Массив это конечная последовательность упорядоченных элементов одного типа, доступ ко всем элементам в которой выполняется по средствам использования его индекса. Массив представляет собой специализированную структуру данных, которая представлена в виде группы ячеек одного типа, объединенных под одним единым именем. Массивы используются для непосредственной обработки большого количества однотипных данных.
Чаще всего в процессе программирования используются одномерные и двумерные массивы, поэтому можно рассмотреть только эти виды массивов для понимания данной темы.
Для примера разработки был описан и реализован алгоритм шифрования RC4.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
- Архитектура и проектирование программных систем : монография / С.В. Назаров. – 2-е изд., перераб. и доп. – М. : ИНФРА-М, 2018. – 374 с.
- Валитов Ш.М. Современные системные технологии в отраслях экономики: Учебное пособие / Ш.М. Валитов, Ю.И. Азимов, В.А. Павлова. - М.: Проспект, 2016. – 504 c.
- Васильев А.В. Java. Объектно-ориентированное программирование: Учебное пособие. – СПб.: Питер, 2013. – 400 с.
- Венделева М.А. Информационные технологии в управлении.: Учебное пособие для бакалавров / М.А. Венделева, Ю.В. Вертакова. - Люберцы: Юрайт, 2016. – 462 c.
- Гаврилов М.В. Информатика и информационные технологии: Учебник / М.В. Гаврилов, В.А. Климов. - Люберцы: Юрайт, 2016. – 383 c.
- Дарков А.В. Информационные технологии: теоретические основы: Учебное пособие / А.В. Дарков, Н.Н. Шапошников. - СПб.: Лань, 2016. – 448 c.
- Довек Ж. Введение в теорию языков программирования / Ж. Довек, Ж.-Ж. Леви. - М.: ДМК, 2016. – 134 c.
- Ерохин В.В. Безопасность информационных систем: учеб пособие / В.В. Ерохин, Д.А. Погонышева, И.Г. Степченко. - М.: Флинта, 2016. – 184 c.
- Згадзай О.Э. Информационные технологии в юридической деятельности: Учебное пособие / О.Э. Згадзай и др. - М.: ЮНИТИ, 2016. – 335 c.
- Информационные технологии: Учебное пособие / Л.Г. Гагарина, Я.О. Теплова, Е.Л. Румянцева и др.; Под ред. Л.Г. Гагариной - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. – 320 c.
- Информационные системы и технологии: Научное издание. / Под ред. Ю.Ф. Тельнова. - М.: ЮНИТИ, 2016. – 303 c.
- Корнеев И.К. Информационные технологии в работе с документами: Учебник / И.К. Корнеев. - М.: Проспект, 2016. – 304 c.
- Косиненко Н.С. Информационные системы и технологии в экономике: Учебное пособие для бакалавров / Н.С. Косиненко, И.Г. Фризен. - М.: Дашков и К, 2015. – 304 c.
- Кулямин В.В. Технологии программирования. Компонентный подход / В.В. Кулямин. - М.: Интуит, 2014. – 463 c.
- Куроуз Д. Компьютерные сети. Нисходящий подход / Д. Куроуз, К. Росс. - М.: Эксмо, 2016. – 912 c.
- Машнин Т.С. Web-сервисы Java. – СПб.: БХВ – Петербург, 2012. – 560 с.
- Монахов В.В. Язык программирования Java и среда NetBeans. – 3-е изд., перераб. и доп. – СПб.: БХВ – Петербург, 2011. – 704 с.
- Нимейер П. Программирование на Java / Патрик Нимейер, Дэниэл Леук; [пер. с англ. М.А. Райтмана]. – Москва : Эксмо, 2014. – 1216 с.
- Практика и проблематика моделирования бизнес-процессов / Всяких Е.И., Зуева А.Г., Носков Б.В., - 2-е изд., (эл.) – М.:ДМК Пресс, 2018. – 248 с.
- Программирование в алгоритмах / Окулов С.М., – 6-е изд., (эл.) - М.:Лаборатория знаний, 2017. – 386 с.
- Программирование графики на С++. Теория и примеры : учеб. пособие / В.И. Корнеев, Л.Г. Гагарина, М.В. Корнеева. – М. : ИД «ФОРУМ» : ИНФРА-М, 2018. – 517 с.
- Программирование на языке высокого уровня. Программирование на языке С++: учеб. пособие / Т.И. Немцова, С.Ю. Голова, А.И. Терентьев ; под ред. Л.Г. Гагариной. – М. : ИД «ФОРУМ» : ИНФРА-М, 2018. – 512 с.
- Программирование на языке высокого уровня. Программирование на языке Object Pascal : учеб. пособие / Т.И. Немцова, С.Ю. Голова, И.В. Абрамова ; под ред. Л.Г. Гагариной. – М. : ИД «ФОРУМ» : ИНФРА-М, 2018. – 496 с.
- Романова Ю.Д. Информационные технологии в управлении персоналом: Учебник и практикум / Ю.Д. Романова, Т.А. Винтова, П.Е. Коваль. - Люберцы: Юрайт, 2016. – 291 c.
- Сальникова Л.С. Современные коммуникационные технологии в бизнесе: Учебник / Л.С. Сальникова. - М.: Аспект-Пресс, 2015. – 296 c.
- Советов Б.Я. Информационные технологии: теоретические основы: Учебное пособие / Б.Я. Советов, В.В. Цехановский. - СПб.: Лань, 2016. – 448 c.
- Хабибуллин И.Ш. Java 7. – СПб: БХВ – Петербург, 2012. – 768 с.
-
Валитов Ш.М. Современные системные технологии в отраслях экономики: Учебное пособие / Ш.М. Валитов, Ю.И. Азимов, В.А. Павлова. - М.: Проспект, 2016. – 504 c. ↑
-
Архитектура и проектирование программных систем : монография / С.В. Назаров. – 2-е изд., перераб. и доп. – М. : ИНФРА-М, 2018. – 374 с. ↑
-
Гаврилов М.В. Информатика и информационные технологии: Учебник / М.В. Гаврилов, В.А. Климов. - Люберцы: Юрайт, 2016. – 383 c. ↑
-
Сальникова Л.С. Современные коммуникационные технологии в бизнесе: Учебник / Л.С. Сальникова. - М.: Аспект-Пресс, 2015. – 296 c. ↑
-
Довек Ж. Введение в теорию языков программирования / Ж. Довек, Ж.-Ж. Леви. - М.: ДМК, 2016. – 134 c. ↑
-
Венделева М.А. Информационные технологии в управлении.: Учебное пособие для бакалавров / М.А. Венделева, Ю.В. Вертакова. - Люберцы: Юрайт, 2016. – 462 c. ↑
-
Советов Б.Я. Информационные технологии: теоретические основы: Учебное пособие / Б.Я. Советов, В.В. Цехановский. - СПб.: Лань, 2016. – 448 c. ↑
-
Згадзай О.Э. Информационные технологии в юридической деятельности: Учебное пособие / О.Э. Згадзай и др. - М.: ЮНИТИ, 2016. – 335 c. ↑
-
Дарков А.В. Информационные технологии: теоретические основы: Учебное пособие / А.В. Дарков, Н.Н. Шапошников. - СПб.: Лань, 2016. – 448 c. ↑
-
Информационные технологии: Учебное пособие / Л.Г. Гагарина, Я.О. Теплова, Е.Л. Румянцева и др.; Под ред. Л.Г. Гагариной - М.: ИД ФОРУМ: НИЦ ИНФРА-М, 2015. – 320 c. ↑
-
Васильев А.В. Java. Объектно-ориентированное программирование: Учебное пособие. – СПб.: Питер, 2013. – 400 с. ↑
-
Ерохин В.В. Безопасность информационных систем: учеб пособие / В.В. Ерохин, Д.А. Погонышева, И.Г. Степченко. - М.: Флинта, 2016. – 184 c. ↑
-
Информационные системы и технологии: Научное издание. / Под ред. Ю.Ф. Тельнова. - М.: ЮНИТИ, 2016. – 303 c. ↑
-
Косиненко Н.С. Информационные системы и технологии в экономике: Учебное пособие для бакалавров / Н.С. Косиненко, И.Г. Фризен. - М.: Дашков и К, 2015. – 304 c. ↑
-
Машнин Т.С. Web-сервисы Java. – СПб.: БХВ – Петербург, 2012. – 560 с. ↑
-
Хабибуллин И.Ш. Java 7. – СПб: БХВ – Петербург, 2012. – 768 с. ↑
-
Куроуз Д. Компьютерные сети. Нисходящий подход / Д. Куроуз, К. Росс. - М.: Эксмо, 2016. – 912 c. ↑
-
Монахов В.В. Язык программирования Java и среда NetBeans. – 3-е изд., перераб. и доп. – СПб.: БХВ – Петербург, 2011. – 704 с. ↑
-
Кулямин В.В. Технологии программирования. Компонентный подход / В.В. Кулямин. - М.: Интуит, 2014. – 463 c. ↑
-
Корнеев И.К. Информационные технологии в работе с документами: Учебник / И.К. Корнеев. - М.: Проспект, 2016. – 304 c. ↑
-
Нимейер П. Программирование на Java / Патрик Нимейер, Дэниэл Леук; [пер. с англ. М.А. Райтмана]. – Москва : Эксмо, 2014. – 1216 с. ↑
-
Программирование на языке высокого уровня. Программирование на языке С++: учеб. пособие / Т.И. Немцова, С.Ю. Голова, А.И. Терентьев ; под ред. Л.Г. Гагариной. – М. : ИД «ФОРУМ» : ИНФРА-М, 2018. – 512 с. ↑
-
Программирование в алгоритмах / Окулов С.М., – 6-е изд., (эл.) - М.:Лаборатория знаний, 2017. – 386 с. ↑
-
Практика и проблематика моделирования бизнес-процессов / Всяких Е.И., Зуева А.Г., Носков Б.В., - 2-е изд., (эл.) – М.:ДМК Пресс, 2018. – 248 с. ↑
-
Программирование графики на С++. Теория и примеры : учеб. пособие / В.И. Корнеев, Л.Г. Гагарина, М.В. Корнеева. – М. : ИД «ФОРУМ» : ИНФРА-М, 2018. – 517 с. ↑
-
Программирование на языке высокого уровня. Программирование на языке Object Pascal : учеб. пособие / Т.И. Немцова, С.Ю. Голова, И.В. Абрамова ; под ред. Л.Г. Гагариной. – М. : ИД «ФОРУМ» : ИНФРА-М, 2018. – 496 с. ↑
-
Романова Ю.Д. Информационные технологии в управлении персоналом: Учебник и практикум / Ю.Д. Романова, Т.А. Винтова, П.Е. Коваль. - Люберцы: Юрайт, 2016. – 291 c. ↑