Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Методы кодирования данных (Разработка приложения для кодирования текстовой информации)

Содержание:

Введение

Кодирование данных имеет очень важное значение для ввода, обработки, хранения и вывода информации в цифровых устройствах. Это связано с тем, что данные в виде, привычном для человека, почти не пригодны для машины.

Для хранения различных данных существуют различные форматы, а значит и алгоритмы кодирования данных.

Цели кодирования данных в цифровых устройствах:

  1. Для удобного ввода, обработки, хранения и вывода.
  2. Уменьшение объема данных за счет удаления незначимой части информации(сжатие)
  3. Ограничение доступа. Доступ к кодированной информации имеет только тот, кто имеет «ключ» для дешифрации данных.

В первой главе данной курсовой работы приведены базовые принципы кодирования двоичной информации, кодирование текста, графической, звуковой и видеоинформации.

Во второй главе рассмотрены принципы ограничения доступа к информации – криптография. Рассмотрена работа с ключами доступа и способы взлома.

В практической части приведен пример простого WEB-приложения на языке программирования PHP, которое реализует принципы кодирования информации, описанные в первой главе.

При написании курсовой работы в качестве основных источников использовалась следующая литература:

Прайс Д. Программирование на языке Паскаль: Практическое руководство. Пер. с англ.— М.: Мир, 1987. — 232 с. – издание старое, но актуальное. Так как, фундаментальных изменений в базовом языке программирования PASCAL не происходило.

Магда Ю. С. Ассемблер для процессоров Intel Pentium. – Спб.: Питер, 2006. – 410 с. – выбор этого источника в качестве базового обусловлен тем, что автор подробно излагает основы работы с двоичным кодом, рассматривает наборы команд Ассемблера для процессоров Intel, которые работают и в современных процессорах. Подробно рассмотрен процесс перевода из одной системы счисления в другую, а также алгоритмы хранения чисел в памяти компьютера.

Из интернет-источников следует выделить:

http://php.net – официальная документация по языку WEB-программирования PHP. Информация представлена на английском языке.

https://inf1.info – очень много информации по всем аспектам цифровой техники, по работе персональных компьютеров.

https://www.ixbt.com – старейший информационный интернет-портал по информационным технологиям и «железу».

Основная цель написания курсовой работы – получить более глубокие знания по работе с информацией, способами ее защиты.

1. Кодирование данных в ЭВМ

1.1. Двоичный код

Иероглифы или буквы алфавита (тридцать три если говорить о русском языке), десять цифр (от 0 до 9), широчайший диапазон звуков (от 16 до 20000 Гц.), палитра из семи цветов и миллионов их оттенков - вот средства которыми человек пользуется для записи и передачи воспринимаемой информации и первые из них существуют со времен древнего мира.

Помимо этих каналов мир представлен нам через обоняние, тактильные и вкусовые ощущения. Таким образом человеческий мозг имеет дело с невообразимым количеством импульсов, несущих информацию, воспринимает их, обрабатывает, хранит.

Если же говорить о технологиях[1] - мы видим совершенно иную картину. Лампа может излучать свет, а может не излучать, силовое поле может действовать, а может отсутствовать. А вот создать лампу, переливающуюся всеми цветами радуги - уже не тривиальная задача. Точнее сказать задача вполне решаемая если в основу положить простой принцип (что люди и сделали) в котором предпочтение отдается тому, чтобы иметь дело с множеством простых элементов[2] в противоположность малому количеству сложных.

Первые прообразы современных компьютеров появились еще в 19 веке. В 1835 году Чарльз Бэббидж[3] описал свою аналитическую машину. Это был проект компьютера общего назначения, с использованием перфокарт в качестве устройства ввода и носителя данных программы. В качестве источника энергии для работы данного устройства использовался паровой двигатель. Одной из базовых идей было применение шестерен для решения математических задач.

Его первоначальной идеей было применение перфокарт[4] для устройства, вычисляющего и печатающего логарифмические таблицы с большой точностью (то есть для специализированной машины). В дальнейшем данные идеи были развиты до машины общего назначения — его «аналитической машины».

Для ввода аналоговой информации с целью обработки, анализа и хранения используют АЦП (аналогово-цифровой преобразователь).

Для преобразования уже обработанной информации в аналоговый вид используют цифро-аналоговый преобразователь.

Аналого-цифровой преобразователь (АЦП, англ. Analog-to-digital converter, ADC) — устройство, преобразующее входной аналоговый сигнал в дискретный код (цифровой сигнал). Обратное преобразование осуществляется при помощи цифро-аналогового преобразователя (ЦАП, DAC). Как правило, АЦП — электронное устройство[5], преобразующее напряжение в двоичный цифровой код.

Так в основу информационных технологий, в основу хранения, обработки и передачи информации был положен двоичный код (его еще называют бинарным). Этот «язык» оперирует лишь двумя параметрами: «да» или «нет», ноль или единица.

Двоичный код[6] — это способ представления данных в виде кода, в котором каждый разряд принимает одно из двух возможных значений, обычно обозначаемых цифрами 0 и 1. Разряд в этом случае называется двоичным разрядом.

Процесс перевода информации (посредством устройств ввода, а именно камеры, микрофона и т. п.) в двоичный код называется кодированием. Обратный процесс - декодированием (декодирование происходит при выводе информации на монитор, принтер, аудио-динамики и т. п.).

Кодирование информации[7] — процесс преобразования сигнала из формы, удобной для непосредственного использования информации, в форму, удобную для передачи, хранения или автоматической переработки.

Если смотреть на принцип использования двоичного кода внутри вычислительной машины основывается на наличии или отсутствии специфических свойств у запоминающих элементов, которые могут быть фотооптическими, магнитными или электрическими или смешанного типа[8].

Фотооптические носители информации

Рабочая поверхность оптического диска (будь то CD, DVD или BluRay) представляет из себя спираль, состоящую из множества темных и светлых фрагментов. Во время работы CD-дисковода, когда диск очень быстро вращается лазерный луч фокусируется на спиральной дорожке. Далее, при попадании луча на темный фрагмент свет поглощается, при попадании на светлый - отражается и отраженный световой импульс улавливается фотоэлементом[9], за счет чего и осуществляется передача, закодированной посредством светлых и темных фрагментов информации.

В настоящее время оптические диски CD и DVD практически не применяются в бытовых компьютерах, т.к. объемы хранимой информации пользователем существенно превышают[10] 650 Мб (для CD) и 8,5 Гб (для двуслойных DVD). BluRay диски находят применение для хранения видеоконтента в высоком разрешении, а также выступают физическим носителем информации в игровых системах.

Магнитные носители информации

Основные рабочие элементы, например, жесткого диска[11] - вращающаяся с большой скоростью пластина и специальная считывающая головка, движущаяся по поверхности пластины. Поверхность пластины также представлена в виде спирали, состоящей из дискретных фрагментов, каждый из которых может принимать одно из двух состоянии, но на этот раз фрагмент может быть либо намагниченным, либо не намагниченным, реализуя таким образом значение (не буквально) либо 0, либо 1. Так информация кодируется в данном случае.

В связи с развитием технологий[12] стоимость хранения 1 Гб информации на SSD-накопителе существенно упала. Механические жесткие диски заменяют твердотельными накопителями. По сравнению с традиционными жёсткими дисками (HDD) твердотельные накопители имеют меньший размер и вес, являются беззвучными, а также многократно более устойчивы к повреждениям (например, к падению) и имеют гораздо большую скорость записи. В то же время, они имеют в несколько раз большую стоимость в расчете на гигабайт и меньшую износостойкость (ресурс записи).

Твердотельный накопитель[13] (англ. solid-state drive, SSD) — компьютерное энергонезависимое немеханическое запоминающее устройство на основе микросхем памяти, которое пришло на смену HDD.

Электрические носители информации

Для примера рассмотрим модуль оперативной памяти[14] компьютера (ОЗУ). Микросхема ОЗУ, опять же, состоит из большого количества крошечных фрагментов, реализованных посредством микроскопических транзисторов и конденсаторов. Каждый фрагмент может принимать одно из двух состояний, нести в себе электрический заряд или нет. Посредством комбинации таких фрагментов представлен двоичный код в этом случае. Таким же образом информация кодируется и в иных носителях (флеш-карты, HDD-диски, SSD-диски и т.п.).

Информацию, представленную в виде электрических импульсов двоичного кода, обрабатывает процессор[15].

1.2. Двоичный код и системы счисления

Двоичный код представлен в виде совокупности огромного количества мельчайших фрагментов. Для каждого такого фрагмента возможно только одно из двух состояний. Фрагменты, о которых здесь говорится называются битами. Для примера бит это каждый темный или светлый фрагмент спиралевидной дорожки оптического диска, каждая ячейка ОЗУ (оперативной памяти) и т.п.

Количество битов, содержащихся на том или ином носителе, определяет объем информации, которую можно на нем закодировать, так, например CD-диск может содержать до 6 млрд. битов, жесткий диск в 100 раз больше. Современные жесткие диски способны хранить до 15 Тб информации[16].

Один бит позволяет закодировать лишь одно из двух состояний (рис. №1).

Возможные состояний 2 битов

Рис. №1 Хранение информации в 1 бит

В двух битах можно закодировать четыре состояния (рис. №2).

Возможные состояний 3 битов

Рис. №2 Хранение информации в 2 бит

В трех битах можно закодировать одно из восьми состояний.

А в восьми уже - 256 состояний[17]!

В большинстве языков программирования текстовые строки представляют из себя массив символов, а символы в свою очередь кодируются блоком из 8 бит. Как пример, язык программирования PHP[18].

Байт - минимальная единица компьютерной информации.

Однако в связи с тем что работа обычно производится с большими (при счисления в байтах) объемами информации на практике чаще оперируют другими единицами измерения.

• килобайтами (1 килобайт = 1024 байт);

• мегабайтами (1 мегабайт = 1024 килобайт);

• гигабайтами (1 гигабайт = 1024 мегабайт);

• терабайтами (1 терабайт = 1024 гигабайт).

1.3. Кодирование числовой информации

Система счисления (англ. numeral system или system of numeration) — символический метод записи чисел[19], представление чисел с помощью письменных знаков.

В языках программирования высокого уровня чаще всего используют десятичную систему, как наиболее привычную. Для кодирования символьных значений иногда используют шестнадцатеричную систему счисления (целочисленное основание равно 16). Двоичная система получила распространение в основном в языках программирования низкого уровня (ассемблер[20]).

Команды языка ассемблера[21] один в один соответствуют командам процессора и, фактически, представляют собой удобную символьную форму записи (мнемокод) команд и их аргументов. Также язык ассемблера обеспечивает базовые программные абстракции: связывание частей программы и данных через метки с символьными именами и директивы.

Для представления одной из десяти цифр в десятичной системе счисления достаточно одного разряда, в то время как в двоичной потребуются четыре и таким образом для кодирования нужен будет носитель емкостью по крайней мере 4 бита.

Человеку привыкшему к десятичной системе по началу сложно оперировать в рамках двоичной, но в основе обеих систем лежит один и тот же принцип, отличие лишь в количестве используемых цифр и, если говорить о двоичной системе, необходимости оперировать большим количеством разрядов. К примеру, в восьми разрядах двоичной системы самое большое десятичное число - 255, в 16 разрядах – 65535.

На примере языка программирования Паскаль[22] эти значения соответствуют типам переменных BYTE и WORD, которые имеют длину 255 и 65535.

Алгоритмы кодирования десятичных чисел в двоичный код разнятся в зависимости от особенностей чисел.

Целые небольшие числа без знака

Для записи таких чисел в соответствии с двоичной системой счисления на запоминающем устройстве обычно выделяется 1 байт[23]. Схематически запись таких чисел на носитель можно проиллюстрировать так (рис. №3):

Целые числа в бинарном коде

Рис. №3 Схема кодирования двоичных чисел

Целые большие числа (положительные и отрицательные)

Запись одного такого числа требует выделения уже 2 байт (16 бит) на запоминающем устройстве.

Один из битов блока (старший) используется для записи знака (логический ноль - для положительного числа, логическая единица - для отрицательного)[24].

Для примера рассмотрим алгоритм кодирования числа +2676:

1. переводим число в двоичную систему счисления. В двоичной системе счисления число будет выглядеть как 101001110100

2 производим запись числа в первые 15 бит 16-битного блока, оставляя 16-й бит пустым, что соответствует знаку «+»

В итоге получим (рис. №4)

Число со знаком 'Плюс' в бинарном коде

Рис. №4 Схема кодирования чисел более 255

В случае кодирования отрицательного[25] числа наряду с соответствующим значением старшего бита также осуществляется инвертирование остальных битов. Инвертирование применяется с целью замены операций вычитания операциями сложения[26]. Рассмотрим пример кодирования числа -2676:

1. Осуществляется перевод из десятичной в двоичную систему счисления. Число приобретает вид

101001110100

2. Производится запись числа в первые 15 бит блока состоящего из 16 бит. Далее значение каждого и записываемых бит изменяется на противоположное (инвертируется).

3. Последнее: в 16-й бит производится запись, соответствующая отрицательному значению числа, логическая единица.

Схематически число -2676 на запоминающем устройстве можно представить так(рис. №5):

Число со знаком 'Минус' в бинарном коде

Рис. №5 Кодирование отрицательных чисел

Наибольшее десятичное число, которое может быть закодировано в 15 битах - 32767.

Дробные числа (положительные и отрицательные)

Дробные числа или числа с плавающей точкой[27] - форма представления вещественных (действительных) чисел, в которой число хранится в форме мантиссы и показателя степени. При этом число с плавающей точкой имеет фиксированную относительную точность и изменяющуюся абсолютную.

Для записи одного такого числа традиционно[28] выделяется ячейка в 4 байт (32 бит). Алгоритм кодирования следующий[29]:

1. Как и в предыдущем случае в старший бит ячейки записывается логический ноль (если число положительное) или логическая единица (если число отрицательное).

2. Во второй бит записывается знак порядка

3. В следующие семь бит будет записано значение порядка.

4. Далее оставшиеся биты (23 бит) отводятся под запись мантисы числа.

Число с плавающей запятой

Рис. №6 Кодирование дробных числе

Для понимания то, что такое мантиса[30] числа(рис.№5) рассмотрим процесс преобразования десятичного числа 6.25 в бинарный код.

Итак, рассмотрим алгоритм[31]:

1. Десятичное число переводится в двоичное - получаем двоичное число 110,01.

2. Теперь определяется мантиса числа, для чего необходимо переместить запятую таким образом чтобы слева не оставалось ни одной единицы. На выходе получаем мантису ,11001.

3. Определяется значение порядка и знак порядка. Число символов, на которые была сдвинута запятая в процессе получения мантисы является значение порядка. В нашем примере значение порядка равняется 3 (в двоичной форме 11). Направление движения запятой есть знак порядка (отрицательный при движении вправо, положительный - влево)

Порядок нашего двоичного числа (110,01), в соответствии с выше сказанным равен +11.

В виде двоичного кода число примет вид (рис. №6):

Пример числа с плавающей запятой

Рис. №6 Кодирование дробных чисел

В случае, когда числа с плавающей точкой кодируются на 32-х битах их обозначают как числа одинарной точности, на 64-х битах - как числа двойной точности.

1.4. Двоичное кодирование текста

На данный момент для кодирования текстовой информации в двоичный код применяются сразу несколько стандартов.

Стандарт ASCII (от англ. American Standard Code for Information Interchange) - существует с 60-х годов, в соответствии с ним кодирование осуществляется на 7 битах[32] (каждая буква или же символ записывается компьютером в одну ячейку 7 бит.

Семибитная ячейка способна принимать 128 состояний и в сданном стандарте каждое из таких состояний ассоциируется с какой-либо буквой, знаком, символом.

Однако, стандарт кодирования на 7 битах не позволяет закодировать информацию на всех существующих видах кодировок[33]. Так возникли восьмибитные стандарты в которых диапазон кодирования расширился до 256 символов (здесь первые 128 символов аналогичны ASCII, другие 128 отвечают за региональные языковые особенности). Восьмибитными кодировками, распространенными в РФ являются, например KOI8, UTF8, Windows-1251.

Unicode[34] - универсальные стандарты кодирования текстовой информации. Здесь для записи одной буквы, знака, символа используются 16 и более битов. В данных стандартах представлены буквы большинства существующих языков.

Отсутствие единого стандарта кодирования текстовой информации порой является причиной проблем, возникающих, например в случае неверного определения компьютером использованной кодировки и как итог бессмысленные знаки вместо осмысленного текста на мониторе.

В WEB - программировании широкое распространение получила кодировка кода в файлах-скриптах UTF8[35].

1.5. Кодирование в двоичный код графической информации

В основе процесса кодирования изображений лежит разделение изображения на множество микроскопических цветных фрагментов (пикселей), обращающее изображение, например фотографию, в некоторое подобие мозаичного полотна. Цвет каждого пикселя также кодируется и записывается на запоминающее устройство.

Изображение фрагментируется на пиксели фотокамерой или сканером. Количество пикселей на которые может быть разбито изображение - определяет одну из основных характеристик оборудования с точки зрения его качества. Камера с характеристикой, например, 10 Mega Pixels фрагментирует изображение на 10 миллионов пикселей. Чем большее количество пикселей содержит закодированное изображение, тем более впечатляющий результат получается, например, на экране монитора или отпечатанных на бумаге снимках. Однако количество пикселей не единственно значимый параметр, большую роль играет и их цветовое разнообразие (глубина цвета). Существуют несколько алгоритмов записи цвета. Чаще всего используется алгоритм RGB[36] (название составлено из заглавных букв трех цветов, Red, Green, Blue, красный, зеленый, синий). Смешивая эти цвета в разных пропорциях можно получить любой нужный цвет или оттенок.

Согласно алгоритму RGB каждый пиксель кодируется путем указания пропорций соотношения красного, зеленого и синего цветов, участвовавших в его формировании. Большее количества битов, выделенных для кодирования пикселя, соответствует большей насыщенности изображения. Кроме RGB-пространства[37], в сфере компьютерного дизайна используют CMYK (для последующей печати, например, в типографии).

При выделении на кодирование пикселя 8 бит глубина цвета составляет 256 цветов; 12-битов - 4096 цветов; 16-битов - 65536 цветов, 18-битов - 262144 цветов; 24-битов - 16,7 млн цветов (последний вариант называют еще True Color или «Настоящий Цвет»).

В случае использовании 32 бит на кодирование пикселя дополнительные биты используются для регулирования эффекта прозрачности(альфа-канала) или же не используются вовсе (как пример, изображение с атрибутом прозрачности GIF, TIFF и PNG[38]).

Фотокамеры работают только по принципу растровой графики. Т.е. изображение, полученное с помощью фотокамеры, состоит из пикселей, которые при трансформировании(увеличении) итогового изображения происходит увеличение отдельного пикселя. А значит, дополнительные пиксели увеличенного изображения не несут информации. Помимо растровой графики существует также и векторная графика[39], создаваемая исключительно при помощи компьютера, где изображения создаются не из пикселей, а из графических примитивов, а именно линий, фигур и т.п. Возможности векторной графики востребованы дизайнерами, инженерами, архитекторами.

Для записи на запоминающем устройстве векторного изображения компьютер кодирует тип объекта, координаты, параметры, цвет заливки и т.п. Векторная графика в последнее время находи применение и в WEB-дизайне. С помощью векторной графики можно реализовать различные элементы web-страницы, которые будут одинаково хорошо отображаться при разных разрешениях монитора и мобильных устройств[40].

Если размер изображения велик[41], допустим речь идет о сложном дизайнерском проекте, для его хранения в растровой системе пришлось бы кодировать цвет каждого пикселя что потребовало бы значительно больших ресурсов запоминающего устройства нежели при использовании векторной системы. С другой стороны, использование векторной графики не позволяет кодировать фото.

1.6. Кодирование аудиоинформации

Две основные характеристики звуковых волн - частота и амплитуда[42]. Амплитуда характеризует громкость звука. Частота определяет тон, высоту. Писк комара, например, это звук, характеризующийся малой амплитудой и высокой частотой. Звук грозы напротив характеризуется большой амплитудой и низкой частотой.

Графически звуковую волну можно изобразить следующим образом (рис. 7):

Звуковая волна

Рис. №7 Схема звуковой волны

Далее рассмотрим все схему работы компьютера со звуком.

Колебания воздуха преобразуются посредством микрофона в соответствующие им электрические колебания.

Далее благодаря звуковой карте электрические колебания преобразуются в двоичный код, который затем записывается на запоминающем устройстве. По сути, в данном случае звуковая карта выполняет функции аналогово-цифрового преобразователя[43].

Когда запись воспроизводится происходит обратный процесс, то есть бинарный код преобразуется в электрические сигналы, последние посредством магнитной головки акустической системы преобразуются в слышимые звуковые волны.

На схеме ниже представлено графическое изображение волны. Геометрия волны такова что каждому конкретному момент времени соответствует определенная интенсивность (степень отклонения от начального состояния, рис. №8).

Дискретизация звуковой волны

Рис. №8 Амплитуда звуковой волны

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

Однако частота такой дискретизации (разбиения звуковой волны на отрезки) должна быть достаточно высокой, чтобы полученная таким образом картина отображала реальную геометрию волны.

Описанный принцип дискретизации звуковой волны на небольшие отрезки лежит в основе кодирования звука.

Звуковая карта и осуществляет такую дискретизации в совокупности с последующем кодированием интенсивности каждого из фрагментов в бинарный код.

Чем выше частота дискретизации, тем ближе к реальной геометрии звуковой волны зафиксированные данные и тем качественней получается запись.

Возьмем для примера запись простой речи[44]. При воспроизведении речь будет восприниматься привычно, только в том случае, если частота дискретизации при кодировании была 8000 Гц (8 КГц) и более (секунда речи при такой записи в виде бинарного кода должна быть представлена по крайней мере из 8000 частей.

Если же говорить о музыке, то здесь частота дискретизации должна составляет минимум 44,1 КГц (44100 Гц). Широкое распространение для кодирования аудиоинформации получили следующие кодеки MP3[45], OGG. В настоящее время широкое распространение получил кодек FLAC[46] с минимальными потерями качества. Работа данных кодеков основа на свойствах человеческого уха слышать определенные частоты. Те части звукового спектра, которые человек слышит хуже кодируются с меньшим битрейтом или вовсе удаляются из данных о аудиосигнале.

Качество записи в значительной степени определяется также количеством битов[47], выделенных для кодирования каждого фрагмента звуковой волны, полученного в результате дискретизации.

Количество битов, выделенных компьютерной системой для кодирования каждого фрагмента звуковой волны, полученного при дискретизации, называют глубиной звука. Глубины звука 8-битов вполне достаточно при кодирования обычной речи. Музыкальные же произведения при такой глубине звучать будут крайне некачественно. Поэтому звуковые файлы традиционно кодируются с глубиной 16, 24 или даже 32 бита.

Например, если разнообразие интенсивности фрагментов, полученных при дискретизации скажем песни, оказалось более широким (например, 512 вариантов), при том, что для кодирования используются ячейки 8 битов, способной принять одно из 256 значений система «округлит» интенсивность фрагментов до ближайших доступных значений и качество записи сильно пострадает.

Стоит сказать о том, что для воспроизведения звука, закодированного с высокой частотой дискретизации и/или большой глубиной звука необходима, звуковая карта, поддерживающая такой уровень частоты дискретизации и глубины звука.

1.7. Кодирование видеоинформации

Как известно видеозаписи представляют собой комбинацию двух основных составляющих: видеоряда и звуковой дорожки. Аудиодорожка кодируется по тому же алгоритму что и любые другие звуковые данные.

Кодирование видеоизображения производится подобно тому, как осуществляется кодирование растровой графики, однако имеются свои особенности.

Видеозапись представляет собой последовательность сменяющих друг друга кадров[48], т.е. статических изображений (от 25-ти и более в течении секунды).

Кадры сменяющие друг друга в пределах секундного интервала отличаются друг от друга лишь незначительными деталями в связи с чем алгоритмы кодирования видео чаще всего предусматривают запись только первого (базового) кадра, каждый последующий кадр формируется путем записи его отличий от предыдущего.

В настоящее время получили распространение следующие кодеки (алгоритмы сжатия) видеопотока.

MPEG-4 - видео в Интернете (DivX, Xvid). MPEG-4[49] всё ещё находится на стадии разработки и условно можно разделить на несколько частей. Ключевыми частями стандарта MPEG-4 являются часть 2 (MPEG-4 part 2, включая Advanced Simple Profile, используемый в таких кодеках как DivX, Xvid, Nero Digital и 3ivx, а также Quicktime 6) и часть 10 (MPEG-4 part 10/MPEG-4 AVC/H.264 или Advanced Video Coding, используемый такими кодеками как x264, Nero Digital AVC, Quicktime 7, а также применяемый в форматах DVD следующего поколения, таких как HD DVD и Blu-Ray Disc).

H.264/MPEG-4 AVC[50] - Blu-ray, HD DVD, Digital Video Broadcasting, Apple TV. H.264 - стандарт сжатия видеоданных (видеопотока), принятый Международной организацией по стандартизации (ISO). Также известен как MPEG-4 part 10 и AVC (Advanced Video Coding). H.264 — это стандартизированный цифровой формат для сжатия видео высокой четкости(HD) с высокой скоростью передачи данных. С его помощью можно преобразовать большой видеофайл исходного формата в файл другого формата, занимающий примерно в два раза меньше места на диске по сравнению с форматом MPEG-2 (стандарт видео DVD-качества). Формат H.264 универсален. Он позволяет варьировать степень сжатия, чтобы обеспечить соответствие требованиям провайдеров интернет-услуг, веб-сайтов и устройств, включая ноутбуки.

H.265[51] - видео высокой четкости. H.265 является стандартом для сжатия видео, разработанный для новейших поколений видео с высоким разрешением. Он является преемником широко используемого кодер-декодера H.264 (также называемого AVC или MPEG-4 Part 10) и предлагает некоторые существенные улучшения по сравнению с нынешней схемой сжатия. H.265 был разработан Совместной Коллективной Группой по Кодированию Видео (JCT-VC), группой экспертов по кодированию видео, которые начали работать над стандартом сжатия еще в 2010 году.

Заключение

В настоящее время развития современных технологий наиболее универсальным форматом представления информации для ввода, обработки, сжатия, хранения и вывода является бинарный(двоичный) код.

Использование двоичного кода на всех этапах получения и обработки информации позволяет унифицировать инструменты и средства обработки информации. Двоичный код при необходимости легко переводится из одной системы счисления в другую. С помощью двоичного кода можно закодировать, хранить и передавать большие объемы информации (например, видеопоток).

2. Шифрование данных

Шифрование данных, хранимых и обрабатываемых в цифровом виде, представляет собой нестандартную кодировку данных, благодаря которой возможность доступа к ним без соответствующего программного или аппаратного обеспечения становится невозможной. Для работы с зашифрованной информацией необходим соответствующий ключ шифрования[52] (пароль, ключ-файл, отпечаток пальца и т.д.).

Защита информации посредством шифрования[53] включает в себя четыре аспекта:

  • управление доступом (контроль доступа);
  • регистрацию и учет;
  • криптографию (шифрование информации);
  • обеспечение целостности информации (электронная подпись).

Цели шифрования данных.

1. Статическая защита данных[54] от несанкционированного доступа к устройству посторонних лиц (например, в случае утери, кражи устройства, защиты важной информации).

Зашифрованы могут быть отдельные файлы, целые диски с файлами, внешние устройства памяти, внешние жесткие диски, раздел с операционной системой или же жесткий диск со всем его содержимым.

Для доступа к информации требуется ключ.

Наиболее актуальной формой является «прозрачное» шифрование, когда данные, перенесенные на защищенное устройство, шифруются автоматически, «на лету» и автоматически дешифруются[55], когда происходит считывание информации с диска в ОЗУ. При этом после того, как контейнер, том, диск и т.п. был смонтирован (расшифрован на время сессии) пользователь может работать с информацией с тем же комфортом что и при отсутствии защиты.

2. Разделение прав и контроль доступа к данным

Шифрование позволяет закрыть доступ к личным данным, физическим дискам, логическим дискам, той или иной директории, отдельным файлам.

3. Обеспечение защиты отправляемых данных, проходящих через третьи лица, к примеру шифрование письма для последующей отправки по электронной почте, доступ к которому будет лишь у получателя при наличии у него ключа.

4. Идентификация подлинности (аутентификация) и контроль целостности.

Методы шифрования[56] подразделяются на два принципиальных направления:

симметричное шифрование, где для шифрования и дешифрования применяется один и тот же ключ.

асимметричное шифрование[57]. Здесь для шифрования и дешифрования требуются два ключа, один из которых является приватным, а второй - публичным. При этом по публичному ключу восстановить приватный невозможно.

В процессе шифрования как правило осуществляется определенная математическая операция над каждым блоком битов исходных данных, этот процесс называется криптографической обработкой[58].

Помимо этого, могут применяться методы рассеивания информации, например, разделение данных на нетривиально собираемые части.

Так же может использоваться стеганография[59]. В последнем случае исходные открытые данные размещаются по определенному алгоритму среди случайных данных.

В отличии от произвольного преобразования данных шифрование отличается обратимостью преобразования (разумеется, при сохранности симметричного или асимметричного ключа дешифрования).

Идентификация подлинности и контроль целостности[60] обеспечиваются тем, что дешифрование данных с определенным ключом возможно если данные были зашифрованы с соответствующим ключом (тем же самым или парным ключом) и не были как-либо преобразованы пока находились в зашифрованном виде. Так если при использовании метода симметричного шифрования обеспечена секретность двух копий одного ключа, а в случае метода асимметричного шифрования – секретность одного из пары ключей (приватного), успешность процесса дешифрования данных обеспечивает гарантию их подлинности и целостности (принадлежности самого алгоритма шифрования и его программной реализации).

Шифрование представляет собой мощный способ защиты информации, при качественном исполнении программной или аппаратной составляющих.

Однако использовании шифрования должны быть учтены два момента[61]. Во-первых, любая зашифрованная информация в принципе может быть дешифрована при наличии необходимого программного обеспечения, времени и ресурсов (однако в большинстве случаев результат не окупает затраты).

Во-вторых, в процессе рабочей сессии для доступа к информации ее владельца она дешифруется и, таким образом становится возможным и не санкционированный доступ.

Шифрование может быть дифференцирована на сильное (взломоустойчивое) и слабое (которое затрудняет доступ к информации, однако при наличии специализированного ПО может быть относительно просто взломано).

Могут быть выделены следующие методы взлома информации:

  • brute-force attack - определение ключа для дешифрования методом перебора. Применяется очень часто. Как для взлома компьютерного ПО, так и WEB-сервисов[62].
  • key-guessing attack - угадывание ключа
  • определение ключа методом перебора, при известной составляющей части ключа, что позволяет произвести взлом быстрее нежели при простой brute-force атаке
  • взлом алгоритма шифрования непосредственно

Надежность шифрования определяется не только алгоритмом шифрования и качеством его реализации, но и надежностью ключа шифрования-дешифрования[63]. При использовании слабого ключа, например слабого пароля ни один метод шифрования не гарантирует стопроцентной защиты информации.

Однако пароль, включающий достаточное количество символов, гарантирует защиту от взлома лишь методом brute-force атаки, т.е. методом перебора, но не методом угадывания[64].

В рамках второго метода существуют специальные таблицы (радужные таблицы[65]), разработанных на основе данных статистики, лингвистики и психологии сочетаний слов и букв и т.п. того или иного языка, что позволяет на порядок сократить пространство вариантов возможных паролей и таким образом в десятки раз сократить время на взлом.

Еще одной разновидностью атаки является взлом пароля в ситуации, когда известна его часть, что опять же упрощает взлом.

Стоит отметить, что даже в том случае, когда используемый пароль и рабочий ключ в должной мере сложны, существуют возможности для взлома алгоритма шифрования.

Наиболее известные из них:

  • математическое обращение используемого метода;
  • метод plaintext attack[66] - взлом шифрования по известным парам открытых и соответствующих закрытых данных;
  • метод singularity attack - поиск особых точек метода – дублирующих ключей (различных ключей, порождающих одинаковые вспомогательные информационные массивы при шифровании различных исходных данных), вырожденных ключей (порождающих тривиальные или периодические фрагменты вспомогательных информационных массивов при шифровании различных исходных данных), а также вырожденных исходных данных;
  • статистический, в частности дифференциальный, анализ – изучение закономерностей зашифрованных текстов и пар открытых/зашифрованных текстов.

Среди привычных и доступных любому пользователю средств шифрования информации, можно вспомнить программы - архиваторы, содержащие, как правило, встроенные средства шифрования.

По результатам исследований самый высокий рейтинг, среди подобных программ, в плане степени шифрования запакованных данных имеет архиватор RAR[67] и 7ZIP[68].

Заключение

Шифрование данных имеет важное значение при ограничении доступа к информации и обеспечения безопасности как персональных данных, так данных составляющих коммерческую тайну предприятия.

С примерами шифрования данных мы сталкиваемся почти ежеминутно при работе в сети Интернет. Начиная с подключения к защищенной сети по средствам Wi-fi и заканчивая вводом номера карты при оплате онлайн-покупок.

Такие поисковые машины как Google и Яндекс в последнее время отдают предпочтение при проказе в поисковой выдаче сайтов с протоколом HTTPS, что обеспечивает посетителю таких сайтов дополнительные средства шифрования канала передачи данных от пользователя к серверу для обработки.

3. Практическая часть. Разработка приложения для кодирования текстовой информации

3.1 Постановка задачи, выбор средств решения

Задача

Разработать WEB-приложение, которое будет кодировать введенную пользователем строку и выводить результат. Приложение разрабатывается на языке программирования PHP[69].

Этапы решения

  1. Создадим заготовку страницы используя фреймворк bootstrap с формой отправки GET-запроса для обработки текста на стороне сервера.
  2. Проверим на существование и обработаем(закодируем) строку введенную пользователем.
  3. Выведем пользователю результат.

При решении задачи будут использоваться следующие средства

  1. Язык разметки HTML[70]
  2. CSS фреймворк bootstrap 3[71]
  3. JS фреймворк JQuery[72]
  4. PHP

3.2. Разработка приложения

Создадим HTML шаблон (рис.№9)

Рис. №9 HTML-форма отправки данных

Подключим необходимые скрипты для правильной работы и отображения приложения bootstrap, jquery (рис. №10).

Рис. №10 Подключение фреймворка jquery

Создадим событие обработки нажатия кнопки отправки, отредактируем разметку страницы. Т.к. необходимо дождаться полной загрузки страницы, то используем метод javascript window.onload[73].

Событие создаем с помощью фреймворка jquery.

Добавим поле с ответом сервера и зададим id = “response” (рис.№11).

Рис. №11 Событие нажатия на кнопку отправки

Добавим отправку поля формы с помощью технологии ajax[74] скрипту на сервере code.php (рис. №12).

Рис. №12 Отправка данных формы в code.php

Создадим скрипт для обработки данных запроса code.php.

Проверим поступил ли запрос GET с помощью суперглобальногомассива $_GET[75] (рис. №13)

Рис. №13 Обработка ошибок входных данных

Кодирование поступивших данных по следующему алгоритму:

для каждой буквы входного текста получаем ее ASCII код с добавлением случайной буквы(a-z) (рис. №14)

Рис. №14 Основной алгоритм кодирования данных

Полный листинг см. Приложение 1.

Ссылка на онлайн демонстрацию работы приложения http://efx2k1.bget.ru/

Работает приложение следующим образом.

После полной загрузки страницы срабатывает событие javascript window.onload.

Используя технологию AJAX по нажатию на кнопку (в данном случае элемент, эмулирующий поведение кнопки) с id=”myButton” отправляем php-скрипту code.php данные для обработки из текстового поля с id=”inputtext”.

В php-скрипте code.php проверяем, существуют ли данные в суперглобальном массиве $_GET. Если данные не существуют, то отдаем ответ пользователю об ошибке.

Если данные существуют, то производим обработку.

В цикле for[76] изменяем значение переменно $i от $i=0 до i< длинна строки пользователя (т.к. нумерация идет с 0).

Для каждого i-того элемента пользовательской строки получаем код текущего символа $text[$i] с помощью php-функции ord[77]. В данном случае происходит обращение к элементу строки как к элементу массива (об этом было сказано ранее в 1 главе).

Т.к. наш алгоритм, кроме кодирования исходного символа в код ASCII предусматривает добавление «шума» в виде случайно буквы латинского алфавит от a до z, то получим ASCII-коды с помощью php-функции ord.

Генерируем случайное число в диапазоне от $text_a до $text_z с помощью php-функции rand[78] ($text_a, $text_z).

С помощью php функции chr получаем случайный символ в диапазоне от a до z по его коду.

Добавляем к строке $out_txt ее предыдущее значение (изначально это пустая строка) случайную букву $text_chr[79] и ASCII код исходного символа строки $text_code.

Отправляем пользователю ответ с помощью php-функции echo $out_txt.

В HTML-файле данные полученные от сервера с помощью AJAX-метода success и фреймворка jquery задают значение текста для элемента параграфа с id=”response” значение ответа полученного от php-скрипта code.php.

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

Заключение

На практическом примере работы web-приложения показали способы кодирования и шифрования информации из строки в ASCII-код и обратно. Рассмотрен процесс обмена информацией клиент-сервер-клиент с помощью технологии AJAX.

Заключение

Кодирование и шифрование данных имеет важное место в развитии информационных технологий. Все цифровые устройства в основе своей работы имеют операции с двоичным кодом. Двоичное представление информации позволяет легко получать, обрабатывать и хранить данные.

Данные в цифровом виде плотно вошли в нашу жизнь. С кодировкой данных мы встречаемся повсеместно. Отправляя электронную почту, подключаясь к сети Wi-fi, оплачивая покупки в сети Интернет или читая любимый новостной сайт, мы незаметно для себя взаимодействуем с информацией. Информация переходит из одного формата в другой. Как пример, отправляя SMS-сообщение пользователь, используя виртуальную клавиатуру или кнопки преобразует свои мысли в механическое движение. Это механическое движение кнопок или нажатие на экран преобразуется в коды символов, которые затем обрабатываются и передаются оператору.

Записывая видео или звук цифровой видеокамерой без проблем можно его обработать и разместить в сети интернет. Поделиться этим видео с родственниками и друзьями. Цифровые виды связи через сеть интернет зачастую становиться более удобными способами общения людей. Т.к. кроме текстовой информации можно поделиться звуковым, фото и видео контентом. Интернет-ресурсы собирают не меньшую аудиторию по сравнению ТВ.

И на каждом этапе общения людей используя цифровые устройства можно выделить ту малую, элементарную единицу информации – бит.

С помощью бита можно кодировать числа, большие объёмы текса, фотографии, видеоматериал.

В данной курсовой работе мы рассмотрели некоторые из вариантов кодирования различной информации.

Немаловажное значение имеет и шифрование данных для предоставления доступа к информации ограниченного круга лиц. Это важно как для сохранения персональных данных, так и для предприятий и компаний в целом.

В век, когда доступность информации, способы ее получения настолько разнообразны, что, порой не задумываемся какие этапы проходят данные прежде, чем попадут к нам на экран компьютера или гаджета.

Эта легкость в получении информации несет в себе и опасность. Опасность попадания персональной информации в общий доступ. Поэтому так важно знать как информация поступает, обрабатывается и храниться.

Список использованных источников

  1. Гатченко Н.А., Исаев А.С., Яковлев А.Д. «Криптографическая защита информации» – СПб: НИУ ИТМО, 2012. – 142 с. стр. 30
  2. Глинкин, Е.И. Технология аналого-цифровых преобразователей : монография / Е.И. Глинкин, М.Е. Глинкин. – Тамбов : Изд-во Тамб. гос. техн. ун-та, 2008. – 140 с. – 500 экз. – ISBN 978-5-8265-0737-7.
  3. Иофис Е. А. Синтез цвета / Фотокинотехника: Энциклопедия — М.: Советская энциклопедия, 1981. — 447 с. стр. 48
  4. Магда Ю. С. Ассемблер для процессоров Intel Pentium. – Спб.: Питер, 2006. – 410 с.
  5. Прайс Д. Программирование на языке Паскаль: Практическое руководство. Пер. с англ.— М.: Мир, 1987. — 232 с.
  6. Прикладная теория цифровых автоматов / К. Г. Самофалов., А. М. Ромлинкевич, В. Н. Валуйский, Ю. С. Каневский, М. М. Пиневич.— К.: Вища шк. Головное изд-во, 1987. — 375 с.
  7. Столяров А.В. Программирование на языке ассемблера NASM для ОС UNIX ,2011 - 312 с.
  8. Тозик В.Т. Компьютерная графика и дизайн:учебник для студ. учреждений сред. проф. образования / В.Т.Тозик, Л.М.Корпан. 6-е изд., стер. — М.: Издательский центр «Академия», 2015. 208 с.
  9. Штарьков Ю.М. Универсальное кодирование. Теория и алгоритмы. - М.: ФИЗМАТЛИТ, 2013. - 288 с.
  10. Юров. В. И. Assembler. Учебник для вузов. 2-е изд. / — СПб.: Питер, 2003. — 637 с.

Ссылки на ресурсы на русском языках

  1. А.В. Дорофеев. Электронные публикации в среде internet и множественность кодировок русского языка URL:http://www.ict.nsc.ru/win/mathpub/el-pub97/code_pag.htm (Дата обращения 07.01.2019)
  2. Алгоритмы асимметричного шифрования / ВПИ ВолгГТУ URL:http://www.volpi.ru/umkd/zki/index.php?man=1&page=18 (Дата обращения 30.01.2019)
  3. Андрей Кузнецов. Второе дыхание криптографии / Компьютер Пресс URL:https://compress.ru/article.aspx?id=10116 (Дата обращения 20.01.2019)
  4. Антон Поляков. Как программировали наши деды / РИА Новости URL:https://ria.ru/20160912/1476725660.html (Дата обращения 05.01.2019)
  5. Вадим Грибунин. MPEG-4 vs H.264 / Журнал ТЗ № 4 2008 URL:http://www.tzmagazine.ru/jpage.php?uid1=170&uid2=313&uid3=317 (Дата обращения 28.01.2019)
  6. Внедрение на предприятии комплексных решений по защите от утечек информации / AntiMalware URL:https://www.anti-malware.ru/practice/solutions/integrated-solutions-for-protection-against-information-leaks-enterprise-implementation (Дата обращения 14.01.2019)
  7. Все методы взлома MD5 / Журнал Хакер URL:https://xakep.ru/2013/10/13/md5-hack/ (Дата обращения 17.01.2019)
  8. Длина криптографического ключа URL:http://infoprotect.net/varia/dlina_kriptograficheskogo_klyucha (Дата обращения 02.01.2019)
  9. Загрузка документа: DOMContentLoaded, load, beforeunload, unload URL:https://learn.javascript.ru/onload-ondomcontentloaded (Дата обращения 05.02.2019)
  10. Информационная безопасность / Открытые системы URL:https://www.osp.ru/os/1996/04/178931 (Дата об-ращения 12.01.2019)
  11. Итоги 2018 года: SSD-накопители /3D News URL:https://3dnews.ru/980649 (Дата обращения 07.01.2019)
  12. Итоги 2018 года: жесткие диски /3D News URL:https://3dnews.ru/980108 (Дата обращения 12.10.2019)
  13. Киркоров С.И. Лекция № 6. Сжатие речевых сигналов на основе психоакустической модели слухового ана-лизатора человека (2 часа) URL:http://www.mediascan.by/index.files/l6_dpsi.pdf (Дата обращения 12.01.2019)
  14. Ключ шифрования / SecurityLAB URL:https://www.securitylab.ru/news/tags/%EA%EB%FE%F7+%F8%E8%F4%F0%EE%E2%E0%ED%E8%FF/ (Дата обращения 14.01.2019)
  15. Кодирование вещественных чисел. Нормализованное представление числа / Планета Информатики URL:https://inf1.info/float (Дата обращения 12.01.2019)
  16. Крис Касперски. Оперативная память - из глубин времен до наших дней / CODENet URL:http://www.codenet.ru/progr/asm/ram/ (Дата обращения 05.01.2019)
  17. Леонид Черняк. Чарльз Бэббидж - изобретатель и... политэконом /Computerworld Россия URL:https://www.osp.ru/cw/2001/17/40316/ (Дата обращения 05.01.2019)
  18. Лиам Клири. Тенденции развития информационных технологий / Windows IT Pro/RE URL:https://www.osp.ru/winitpro/2017/04/13051880/ (Дата обращения 05.01.2019)
  19. Массированная брутфорс-атака «заражает» сотни тысяч сайтов на движке WordPress майнером Monero URL:https://tproger.ru/news/wordpress-brute-force-attack/ (Дата обращения 01.02.2019)
  20. Новая оптическая ячейка памяти обеспечивает рекордную плотность хранения данных / IxBT URL:https://www.ixbt.com/news/2018/12/20/novaja-opticheskaja-jachejka-pamjati-obespechivaet-rekordnuju-plotnost-hranenija-dannyh.html (Дата обращения 07.01.2019)
  21. Описание симметричного и асимметричного шифрования / Support Microsoft URL:https://support.microsoft.com/ru-kz/help/246071 (Дата обращения 18.01.2019)
  22. Особенности векторной графики / МГУ им. адм. Г.И. Невельского URL:http://vm.msun.ru/Oixt/Malevih/Help_diz/Sp_diz_6.htm (Дата обращения 14.01.2019)
  23. Ошибочное понимание ИТ-безопасности: пароли / Касперски Дейли URL:https://www.kaspersky.ru/blog/false-perception-of-it-security-passwords/6460/ (Дата обращения 05.01.2019)
  24. Представлен видеоформат H.265: то же качество, что и у H.264 при двукратном сжатии / 3DNews URL:https://3dnews.ru/640762 (Дата обращения 20.01.2019)
  25. Растровые и векторные изображения / Альфа-Байт URL:https://alpha-byte.ru/rastrovyie-vektornyie-izobrazheniya (Дата обращения 08.01.2019)
  26. Рубен Садоян. Методы сжатия цифрового видео / Компьютер Пресс URL:https://compress.ru/article.aspx?id=11935 (Дата обращения 17.01.2019)
  27. Системы счисления / Архив журнала «НАУКА И ЖИЗНЬ» URL:https://www.nkj.ru/archive/articles/5200/ (Дата обращения 05.01.2019)
  28. Современные оптические носители и накопители /Компьютер Пресс URL:https://compress.ru/article.aspx?id=10324 (Дата обращения 07.01.2019)
  29. Справочник по HTML URL:http://htmlbook.ru/html (Дата обращения 05.02.2019)
  30. Статистика использования браузеров, поисковых систем, каталогов и пр., тенденции пользовательских предпочтений на базе статистики ресурсов, использующих счетчик HotLog URL:https://www.hotlog.ru/global/screen (Дата обращения 05.01.2019)
  31. Стеганография в XXI веке. Цели. Практическое применение. Актуальность / habr URL:https://habr.com/ru/post/253045/ (Дата обращения 05.01.2019)
  32. Таблица ASCII / cppreference.com URL:https://ru.cppreference.com/w/cpp/language/ascii(Дата обращения 07.01.2019)
  33. Таблица символов Юникода URL:https://unicode-table.com/ru/ (Дата обращения 17.01.2019)
  34. Умение слышать. Часть 1 / Журнал "Car&Music" 2001 г. №3 Роберт Харли URL:https://www.hi-fi.ru/review/detail/699387 (Дата обращения 17.01.2019)
  35. Устройство и принцип работы магнитных дисков /Планета Информатики URL:https://inf1.info/disk (Дата обращения 07.01.2019)
  36. Хостинг-провайдер: серверы в NL / US. Возможное будущее оптических носителей: 10 ТБ, 600 лет, один диск /habr URL:https://habr.com/ru/company/ua-hosting/blog/374389/ (Дата обращения 05.01.2019)
  37. Числа с плавающей точкой / PHP.net:http://php.net/manual/ru/language.types.float.php (Дата обращения 12.10.2019)
  38. Шифрование - метод защиты информации / CodeNET URL:http://www.codenet.ru/progr/alg/enc/1.php (Дата обращения 12.01.2019)
  39. Шифрование дисков «на лету»: как защитить конфиденциальную информацию / CNews URL:http://safe.cnews.ru/articles/2016-02-04_shifrovanie_diskov_na_letu_kak_zashchitit_konfidentsialnuyu_informatsiyu (Дата обращения 28.01.2019)
  40. mp3 Разбираемся по порядку / soundcoder URL:http://www.soundcoder.com/stati/kompressory/mp3-razbiraemsya-po-poryadku/ (Дата обращения 05.01.2019)

Ссылки на ресурсы на иностранных языках

  1. 7zip/ 7zip oficial site URL:https://www.7-zip.org/ (Дата обращения 18.01.2019)
  2. AJAX и COMET URL:https://learn.javascript.ru/ajax-intro (Дата обращения 05.02.2019)
  3. Bootstrap The world's most popular mobile-first and responsive front-end framework. URL:https://getbootstrap.com/docs/3.3/ (Дата обращения 05.02.2019)
  4. Developement and Implementation of an MPEG1 Layer III Decoder on x86 and TMS320C6711 platforms URL:http://www2.units.it/~ingeln/tesi/2005/decoder_mp3%20_1di2.ppt (Дата обращения 05.01.2019)
  5. FLAC - Free Lossless Audio Codec URL:https://www.openhub.net/p/flac/analyses/latest/languages_summary (Да-та обращения 17.01.2019)
  6. Known-Plaintext Attack URL:http://www.crypto-it.net/eng/attacks/known-plaintext.html (Дата обращения 14.01.2019)
  7. MPEG4 в вопросах и ответах / IxBT URL:https://www.ixbt.com/multimedia/mpeg4-qa.shtml (Дата обращения 14.01.2019)
  8. PHP String types / PHP.net:http://php.net/manual/ru/language.types.string.php (Дата обращения 12.01.2019)
  9. PHP.SU - Функция ord() URL:http://www.php.su/ord (Дата обращения 05.02.2019)
  10. PHP: $_GET - Manual URL:http://php.net/manual/en/reserved.variables.get.php (Дата обращения 05.02.2019)
  11. PHP: Hypertext Preprocessor URL:http://php.net/ (Дата обращения 05.02.2019)
  12. PHP: chr - Manual URL:http://php.net/manual/en/function.chr.php (Дата обращения 05.02.2019)
  13. PHP: for - Manual URL:http://php.net/manual/en/control-structures.for.php (Дата обращения 05.02.2019)
  14. PHP: rand - Manual URL:http://php.net/manual/en/function.rand.php (Дата обращения 05.02.2019)
  15. Portable Network Graphics (PNG) Specification (Second Edition) / w3.org URL:https://www.w3.org/TR/PNG/ (Дата обращения 17.01.2019)
  16. RAR / RAR oficial site URL:https://www.rarlab.com/ (Дата обращения 17.01.2019)
  17. SSD в цифрах: интересные факты о накопителях / Rambler.Финансы URL:https://finance.rambler.ru/markets/39708178-ssd-v-tsifrah-interesnye-fakty-o-nakopitelyah/ (Дата обращения 05.01.2019)
  18. Unicode - стандарт кодирования символов, включающий в себя знаки почти всех письменных языков мира URL:http://www.unicode.org/ (Дата обращения 14.01.2019)
  19. jQuery URL:https://jquery.com/ (Дата обращения 05.02.2019)

Приложения

Приложение 1

Листинг WEB-приложения.

Файл index.html

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Практическая часть работы</title>

<link href="/css/bootstrap.min.css" rel="stylesheet">

</head>

<body>

<div class="container">

<h1>Пример кодировния текста</h1>

<h3>Курсовая работа Новик А.И.</h3>

<!-- форма отправки текста для шифрования -->

<form>

<div class="form-group">

<label for="inputtext">Текст для шифрования</label>

<textarea type="text" class="form-control" id="inputtext" placeholder="Введите текст для шифрования"></textarea>

</div>

<span class="btn btn-default" id="myButton">Отправить</span>

</form>

<!--// форма отправки текста для шифрования -->

<!-- поле для вывода ответа сервера -->

<h4>Ниже будет ответ сервера</h4>

<p id="response"></p>

<!--// поле для вывода ответа сервера -->

</div>

<script type="text/javascript">

window.onload = function () {

$("#myButton").click(function () {

// получаем значение поля с id = inputtext

var str = $('#inputtext').val();

// отправляем ajax запрос

$.ajax({

url: "/code.php",

data: {text:str},

success: function(e){

// обображаем полученные данные

$('#response').text(e);

}

});

});

}

</script>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

<script src="/js/bootstrap.min.js"></script>

</body>

</html>

Файл code.php

<?php

/**

* Created by PhpStorm.

* User: efx

*/

$out_txt = '';

// проверим, поступил ли запрос GET

if ($_GET['text']!='') {

//данные для обработки

$text = $_GET['text'];

for($i = 0; $i < strlen($text); $i++)

{

// получаем код текущего символа $text[$i]

$text_code = ord($text[$i]);

//ASCII код буквы "a"

$text_a = ord('a');

//ASCII код буквы "z"

$text_z = ord('z');

// генерируем случайное число в диапазоне от $text_a до $text_z

$text_rand = rand($text_a,$text_z);

// получаем символ по его коду

$text_chr = chr($text_rand);

// добавляем к строке $out_txt ее предыдущее значение

// случайную букву $text_chr и ASCII код исходного символа строки $text_code

$out_txt .= $text_chr.$text_code;

}

}

else

{

// запрос пустой - выдаем ошибку

$out_txt = 'Пустая строка для. Введите данные для кодировки';

}

// отправляем ответ

echo $out_txt;

  1. Лиам Клири. Тенденции развития информационных технологий /

    Windows IT Pro/RE URL:https://www.osp.ru/winitpro/2017/04/13051880/ (Дата обращения 05.01.2019)

  2. Прикладная теория цифровых автоматов / К. Г. Самофалов, А. М. Ромлинкевич, В. Н. Валуйский, Ю. С. Каневский, М. М. Пиневич.— К.: Вища шк. Головное изд-во, 1987. — С. 9

  3. Леонид Черняк. Чарльз Бэббидж - изобретатель и... политэконом /Computerworld Россия URL:https://www.osp.ru/cw/2001/17/40316/ (Дата обращения 05.01.2019)

  4. Антон Поляков. Как программировали наши деды /

    РИА Новости URL:https://ria.ru/20160912/1476725660.html (Дата обращения 05.01.2019)

  5. Глинкин, Е.И. Г542 Технология аналого-цифровых преобразователей : монография / Е.И. Глинкин, М.Е. Глинкин. – Тамбов : Изд-во Тамб. гос. техн. ун-та, 2008. – С. 5

  6. Столяров А.В. Программирование на языке ассемблера NASM для ОС UNIX (2011) С. 8

  7. Штарьков Ю.М. Универсальное кодирование. Теория и алгоритмы. - М.: ФИЗМАТЛИТ, 2013. - 288 с. - ISBN 978-5-9221-1517-9. С. 12

  8. Новая оптическая ячейка памяти обеспечивает рекордную плотность хранения данных /

    IxBT URL:https://www.ixbt.com/news/2018/12/20/novaja-opticheskaja-jachejka-pamjati-obespechivaet-rekordnuju-plotnost-hranenija-dannyh.html (Дата обращения 07.01.2019)

  9. Современные оптические носители и накопители /Компьютер Пресс URL:https://compress.ru/article.aspx?id=10324 (Дата обращения 07.01.2019)

  10. Хостинг-провайдер: серверы в NL / US. Возможное будущее оптических носителей: 10 ТБ, 600 лет, один диск /habr URL:https://habr.com/ru/company/ua-hosting/blog/374389/ (Дата обращения 05.01.2019)

  11. Устройство и принцип работы магнитных дисков /Планета Информатики URL:https://inf1.info/disk (Дата обращения 07.01.2019)

  12. Итоги 2018 года: SSD-накопители /3D News URL:https://3dnews.ru/980649 (Дата обращения 07.01.2019)

  13. SSD в цифрах: интересные факты о накопителях /

    Rambler.Финансы URL:https://finance.rambler.ru/markets/39708178-ssd-v-tsifrah-interesnye-fakty-o-nakopitelyah/ (Дата обращения 05.01.2019)

  14. Крис Касперски. Оперативная память - из глубин времен до наших дней / CODENet URL:http://www.codenet.ru/progr/asm/ram/ (Дата обращения 05.01.2019)

  15. Магда Ю. С. - Ассемблер для процессоров Intel Pentium. – Спб.: Питер, 2006. – С. 14

  16. Итоги 2018 года: жесткие диски /3D News URL:https://3dnews.ru/980108 (Дата обращения 12.10.2019)

  17. Магда Ю. С. - Ассемблер для процессоров Intel Pentium. – Спб.: Питер, 2006. – С. 9

  18. PHP String types / PHP.net:http://php.net/manual/ru/language.types.string.php (Дата обращения 12.01.2019)

  19. Системы счисления / Архив журнала «НАУКА И ЖИЗНЬ» URL:https://www.nkj.ru/archive/articles/5200/ (Дата обращения 05.01.2019)

  20. Assembler. Учебник для вузов. 2-е изд. / В. И. Юров — СПб.: Питер, 2003. —С. 19

  21. Магда Ю. С. - Ассемблер для процессоров Intel Pentium. – Спб.: Питер, 2006. – С. 21-22

  22. Прайс Д. Программирование на языке Паскаль: Практическое руководство. Пер. с англ.— М.: Мир, 1987. —С. 32

  23. Assembler. Учебник для вузов. 2-е изд. / В. И. Юров — СПб.: Питер, 2003. —С. 75

  24. Магда Ю. С. - Ассемблер для процессоров Intel Pentium. – Спб.: Питер, 2006. – С. 23

  25. Assembler. Учебник для вузов. 2-е изд. / В. И. Юров — СПб.: Питер, 2003. —С. 85

  26. Магда Ю. С. - Ассемблер для процессоров Intel Pentium. – Спб.: Питер, 2006. – С. 20

  27. Числа с плавающей точкой / PHP.net:http://php.net/manual/ru/language.types.float.php (Дата обращения 12.10.2019)

  28. Assembler. Учебник для вузов. 2-е изд. / В. И. Юров — СПб.: Питер, 2003. —С. 80

  29. Магда Ю. С. - Ассемблер для процессоров Intel Pentium. – Спб.: Питер, 2006. – С. 27

  30. Кодирование вещественных чисел. Нормализованное представление числа / Планета Информатики URL:https://inf1.info/float (Дата обращения 12.01.2019)

  31. Assembler. Учебник для вузов. 2-е изд. / В. И. Юров — СПб.: Питер, 2003. —С. 80

  32. Таблица ASCII / cppreference.com URL:https://ru.cppreference.com/w/cpp/language/ascii(Дата обращения 07.01.2019)

  33. А.В. Дорофеев. Электронные публикации в среде internet и множественность кодировок русского языка URL:http://www.ict.nsc.ru/win/mathpub/el-pub97/code_pag.htm (Дата обращения 07.01.2019)

  34. Unicode - стандарт кодирования символов, включающий в себя знаки почти всех письменных языков мира URL:http://www.unicode.org/ (Дата обращения 14.01.2019)

  35. Таблица символов Юникода URL:https://unicode-table.com/ru/ (Дата обращения 17.01.2019)

  36. Синтез цвета // Фотокинотехника: Энциклопедия / Гл. ред. Е. А. Иофис. — М.: Советская энциклопедия, 1981. — С. 48

  37. Тозик В.Т. Компьютерная графика и дизайн:учебник для студ. учреждений сред. проф. образования / В.Т.Тозик, Л.М.Корпан. 6-е изд., стер. — М.: Издательский центр «Академия», 2015. С. 70

  38. Portable Network Graphics (PNG) Specification (Second Edition) / w3.org URL:https://www.w3.org/TR/PNG/ (Дата обращения 17.01.2019)

  39. Особенности векторной графики / МГУ им. адм. Г.И. Невельского URL:http://vm.msun.ru/Oixt/Malevih/Help_diz/Sp_diz_6.htm (Дата обращения 14.01.2019)

  40. Статистика использования браузеров, поисковых систем, каталогов и пр., тенденции пользовательских предпочтений на базе статистики ресурсов, использующих счетчик HotLog URL:https://www.hotlog.ru/global/screen (Дата обращения 05.01.2019)

  41. Растровые и векторные изображения / Альфа-Байт URL:https://alpha-byte.ru/rastrovyie-vektornyie-izobrazheniya (Дата обращения 08.01.2019)

  42. Умение слышать. Часть 1 / Журнал "Car&Music" 2001 г. №3 Роберт Харли URL:https://www.hi-fi.ru/review/detail/699387 (Дата обращения 17.01.2019)

  43. Прикладная теория цифровых автоматов / К. Г. Самофалов, А. М. Ромлинкевич, В. Н. Валуйский, Ю. С. Каневский, М. М. Пиневич.— К.: Вища шк. Головное изд-во, 1987. — С. 12

  44. Киркоров С.И. Лекция № 6. Сжатие речевых сигналов на основе психоакустической модели слухового анализатора человека (2 часа) URL:http://www.mediascan.by/index.files/l6_dpsi.pdf (Дата обращения 12.01.2019)

  45. Developement and Implementation of an MPEG1 Layer III Decoder on x86 and TMS320C6711 platforms URL:http://www2.units.it/~ingeln/tesi/2005/decoder_mp3%20_1di2.ppt (Дата обращения 05.01.2019)

  46. FLAC - Free Lossless Audio Codec URL:https://www.openhub.net/p/flac/analyses/latest/languages_summary (Дата обращения 17.01.2019)

  47. mp3 Разбираемся по порядку / soundcoder URL:http://www.soundcoder.com/stati/kompressory/mp3-razbiraemsya-po-poryadku/ (Дата обращения 05.01.2019)

  48. Рубен Садоян. Методы сжатия цифрового видео / Компьютер Пресс URL:https://compress.ru/article.aspx?id=11935 (Дата обращения 17.01.2019)

  49. MPEG4 в вопросах и ответах / IxBT URL:https://www.ixbt.com/multimedia/mpeg4-qa.shtml (Дата обращения 14.01.2019)

  50. Вадим Грибунин. MPEG-4 vs H.264 / Журнал ТЗ № 4 2008 URL:http://www.tzmagazine.ru/jpage.php?uid1=170&uid2=313&uid3=317 (Дата обращения 28.01.2019)

  51. Представлен видеоформат H.265: то же качество, что и у H.264 при двукратном сжатии / 3DNews URL:https://3dnews.ru/640762 (Дата обращения 20.01.2019)

  52. Ключ шифрования / SecurityLAB URL:https://www.securitylab.ru/news/tags/%EA%EB%FE%F7+%F8%E8%F4%F0%EE%E2%E0%ED%E8%FF/ (Дата обращения 14.01.2019)

  53. Шифрование - метод защиты информации / CodeNET URL:http://www.codenet.ru/progr/alg/enc/1.php (Дата обращения 12.01.2019)

  54. Внедрение на предприятии комплексных решений по защите от утечек информации / AntiMalware URL:https://www.anti-malware.ru/practice/solutions/integrated-solutions-for-protection-against-information-leaks-enterprise-implementation (Дата обращения 14.01.2019)

  55. Шифрование дисков «на лету»: как защитить конфиденциальную информацию / CNews URL:http://safe.cnews.ru/articles/2016-02-04_shifrovanie_diskov_na_letu_kak_zashchitit_konfidentsialnuyu_informatsiyu (Дата обращения 28.01.2019)

  56. Описание симметричного и асимметричного шифрования / Support Microsoft URL:https://support.microsoft.com/ru-kz/help/246071 (Дата обращения 18.01.2019)

  57. Алгоритмы асимметричного шифрования / ВПИ ВолгГТУ URL:http://www.volpi.ru/umkd/zki/index.php?man=1&page=18 (Дата обращения 30.01.2019)

  58. Гатченко Н.А., Исаев А.С., Яковлев А.Д. «Криптографическая защита информации» – СПб: НИУ ИТМО, 2012. – С. 30

  59. Стеганография в XXI веке. Цели. Практическое применение. Актуальность / habr URL:https://habr.com/ru/post/253045/ (Дата обращения 05.01.2019)

  60. Информационная безопасность / Открытые системы URL:https://www.osp.ru/os/1996/04/178931 (Дата обращения 12.01.2019)

  61. Андрей Кузнецов. Второе дыхание криптографии / Компьютер Пресс URL:https://compress.ru/article.aspx?id=10116 (Дата обращения 20.01.2019)

  62. Массированная брутфорс-атака «заражает» сотни тысяч сайтов на движке WordPress майнером Monero URL:https://tproger.ru/news/wordpress-brute-force-attack/ (Дата обращения 01.02.2019)

  63. Длина криптографического ключа URL:http://infoprotect.net/varia/dlina_kriptograficheskogo_klyucha (Дата обращения 02.01.2019)

  64. Ошибочное понимание ИТ-безопасности: пароли / Касперски Дейли URL:https://www.kaspersky.ru/blog/false-perception-of-it-security-passwords/6460/ (Дата обращения 05.01.2019)

  65. Все методы взлома MD5 / Журнал Хакер URL:https://xakep.ru/2013/10/13/md5-hack/ (Дата обращения 17.01.2019)

  66. Known-Plaintext Attack URL:http://www.crypto-it.net/eng/attacks/known-plaintext.html (Дата обращения 14.01.2019)

  67. RAR / RAR oficial site URL:https://www.rarlab.com/ (Дата обращения 17.01.2019)

  68. 7zip/ 7zip oficial site URL:https://www.7-zip.org/ (Дата обращения 18.01.2019)

  69. PHP: Hypertext Preprocessor URL:http://php.net/ (Дата обращения 05.02.2019)

  70. Справочник по HTML URL:http://htmlbook.ru/html (Дата обращения 05.02.2019)

  71. Bootstrap The world's most popular mobile-first and responsive front-end framework. URL:https://getbootstrap.com/docs/3.3/ (Дата обращения 05.02.2019)

  72. jQuery URL:https://jquery.com/ (Дата обращения 05.02.2019)

  73. Загрузка документа: DOMContentLoaded, load, beforeunload, unload URL:https://learn.javascript.ru/onload-ondomcontentloaded (Дата обращения 05.02.2019)

  74. AJAX и COMET URL:https://learn.javascript.ru/ajax-intro (Дата обращения 05.02.2019)

  75. PHP: $_GET - Manual URL:http://php.net/manual/en/reserved.variables.get.php (Дата обращения 05.02.2019)

  76. PHP: for - Manual URL:http://php.net/manual/en/control-structures.for.php (Дата обращения 05.02.2019)

  77. PHP.SU - Функция ord() URL:http://www.php.su/ord (Дата обращения 05.02.2019)

  78. PHP: rand - Manual URL:http://php.net/manual/en/function.rand.php (Дата обращения 05.02.2019)

  79. PHP: chr - Manual URL:http://php.net/manual/en/function.chr.php (Дата обращения 05.02.2019)