|
Кодирование ― процесс представления информации в виде кода, т.е. набора условных обозначений для представления информации.
Человек выражает свои мысли в виде предложений, составленных из слов. Они являются алфавитным представлением информации. Основу любого языка составляет алфавит - конечный набор различных знаков (символов) любой природы, из которых складывается сообщение.
Кодирование сводиться к использованию совокупности символов по строго определенным правилам и имеет два основных значения:
■ Способ изложения информации в виде, приемлемом и понимаемым объектом (например ЭВМ),
■ Способ защиты информации от нежелаемого доступа или распространения.
Возможно объединение этих функций, ввиду универсальности удобства, и/или же, ввиду естественных особенностей местоположения группы людей (язык определенного народа).
История возникновения
Согласно данным, раздобытым и приведенным Дэвидом Каном в своей книге “The Codebreackers” (“Раскодировщики”), которая была написана им еще в 1967 году, но служит и по сей день наиболее богатым источником информации по криптографии, первыми известными “шифрователями” данных на планете были египтяне, еще в 1900 году до нашей эры приступившие к исписыванию стен своих жилищ странными иероглифами. Их последователями стали месопотамцы, чьи глиняные тарелки украшали своеобразные картинки, заключающие в себе какой-то определенный смысл. Искусству их оформления они стали обучаться примерно в 1500 году до нашей эры. Спустя тысячу лет жители иудейского царства изобрели для написания книг своеобразный простейший шифр, ATBASH, принцип записи которого основывался на алфавите, только в обратном порядке. На этом “языке” древние евреи писали некоторые книги. А позже ими было изобретено еще несколько способов кодирования записанной информации.
В 487 году до нашей эры греки по некоторым данным создали первое “устройство” для шифрования данных (принцип его действия до сих пор не раскрыт), представляющее из себя нечто неопределенное, на что наматывали тонкую кожаную ленту. Затем исписанную полоску материала снимали с, условно говоря, “барабана” и одевали на себя, как пояс. Предполагают, что получатель закодированного “сообщения”, носил “дешифратор” все время с собой, и мог прочесть текст послания где угодно. Но подлинность именно этой истории в 1998 году была оспорена, и теперь многие полагают, что это всего лишь миф.
Следующим поклонником зарождающейся криптографии стал Юлий Цезарь (100-44 гг. до н.э.). Примерно в пятидесятом году до нашей эры он освоил способ кодирования важных документов путем замены некоторых букв нормального алфавита и применял его для тайной правительственной переписки. Шифр Цезаря был проще ATBASH, но, принимая во внимание то, что большинство людей в то время были неграмотными и читать – то толком не умели, для передачи ценных данных пришелся в самый раз. Помимо подстановки “собственных” букв алфавита некоторые отдельные слова Цезарь писал на латинском, а некоторые - на греческом, чтобы окончательно сбить с толку любопытных злоумышленников.
Где-то в 200 году уже нашей эры по данным опять же Кана шифр применяли для записи на каком-то “Ляйденском папирусе” “волшебных” рецептов. В середине семисотых годов в свет вышла первая книга о криптографии, написанная, судя по длине имени ее автора, арабом, воодушевленным тем решением, которое пришло ему в голову при создании системы кодирования греческих слов для византийского императора. А в 855 году нашей эры его коллега представил сразу несколько новых алфавитов, из знаков которых в последствии составляли свои записи всякие колдуны и колдуньи.
Многие послания Венецианского правительства в 1226 году были зашифрованы довольно оригинальным образом - гласные буквы многих слов заменялись точками и крестиками. Как их получателям удавалось прочесть написанное – неясным осталось до сих пор. Но то, что речь опять идет о криптографии – очевидно.
1412-тым годом датируют четырнадцати томную энциклопедию на арабском языке, один из довольно внушительных разделов которой был посвящен криптографии и криптологии. В нем приводились данные о принципе кодирования и раскодирования текстовых сообщений, а также описывались первые информационные “таблицы-ключи” с разъяснениями, как правильно трактовать написанное. Уже тогда предусматривались случаи, при которых одна и та же буква в слове употреблялась дважды и более. С целью запутывания возможного похитителя зашифрованного письма, знаки, ее заменяющие, каждый раз использовались разные.
В 18-м году шестнадцатого столетия Йоханнес Тритемиус опубликовал первое печатное издание по криптологии. Он изобрел метод замены каждого слова одной буквой, взятой из последовательности столбцов. Кроме того, он продемонстрировал идею представления лишь одного знака вместо сразу всех букв алфавита.
В последующие годы и века криптографы разных стран совершенствовали свое мастерство, периодически удивляя окружающих новыми шифрами и способами кодирования целых сочинений. Лишь в 1917 году произошло событие, возможно, действительно заслуживающее внимания. В Америке появился первый криптоаналитик. Им стал Вильям Фредерик Фридман, “отец американского криптоанализа”. Сначала вместе с женой Фридман работал в специальной лаборатории при правительстве США, а спустя некоторое время открыл свою школу в Ривербэнке. В функции первого криптоаналитика входило изучение различных вариантов кодирования информации на предмет их взлома. Известно, что системы иногда оказывались не совершенными, и задачей Вильяма ставилось определение этих самых недостатков.
В том же 1917 году Гилберт С. Вернам, сотрудник компании AT&T, представил первый реально действующий и максимально “безопасный” аппарат для кодирования данных. Данные ключа (таблицы последовательно записанных инструкций по расшифровке) брались произвольно и никогда более не использовались. Ключ представлял собой одноразовую кассету с пленкой. Устройство собирались использовать во времена Первой Мировой Войны, однако широкое применение “машинка” получила лишь в двадцатые годы.
Кодирование используется для представление информации в компьютере.
Компьютер может обрабатывать только информацию, представленную в числовой форме. Вся другая информация (например, звуки, изображения, показания приборов и т.д.) для обработки на компьютере должна быть преобразована в числовую форму. Например, чтобы перевести в числовую форму музыкальный звук, можно через небольшие промежутки времени измерять интенсивность звука на определенных частотах, представляя результаты каждого измерения в числовой форме. С помощью программ для компьютера можно выполнить преобразования полученной информации, например "наложить" друг на друга звуки от разных источников. Аналогичным образом на компьютере можно обрабатывать текстовую информацию. При вводе в компьютер каждая буква кодируется определенным числом, а при выводе на внешние устройства (экран или печать) для восприятия человеком по этим числам строятся изображения букв. Соответствие между набором букв и числами называется кодировкой символов.
Как правило, все числа в компьютере представляются с помощью нулей и единиц. Т.е., компьютеры обычно работают в двоичной системе счисления, поскольку при этом устройства для их обработки получаются значительно более простыми. Ввод чисел в компьютер и вывод их для чтения человеком может осуществляться в привычной десятичной форме, а все необходимые преобразования выполняют программы, работающие на компьютере.
Системой счисления называется совокупность приемов наименования и записи чисел.
В любой системе счисления для представления чисел выбираются некоторые символы (их называют цифрами), а остальные числа получаются в результате каких-либо операций над цифрами данной системы счисления.
Арифметические действия над числами в любой позиционной системе счисления производятся по тем же правилам, что и десятичной системе, так как все они основываются на правилах выполнения действий над соответствующими многочленами. При этом нужно только пользоваться теми таблицами сложения и умножения, которые соответствуют данному основанию P системы счисления.
1. При переводе чисел из десятичной системы счисления в систему с основанием P > 1 обычно используют следующий алгоритм:
если переводится целая часть числа, то она делится на P, после чего запоминается остаток от деления. Полученное частное вновь делится на P, остаток запоминается. Процедура продолжается до тех пор, пока частное не станет равным нулю. Остатки от деления на P выписываются в порядке, обратном их получению;
если переводится дробная часть числа, то она умножается на P, после чего целая часть запоминается и отбрасывается. Вновь полученная дробная часть умножается на P и т.д. Процедура продолжается до тех пор, пока дробная часть не станет равной нулю. Целые части выписываются после двоичной запятой в порядке их получения. Результатом может быть либо конечная, либо периодическая двоичная дробь. Поэтому, когда дробь является периодической, приходится обрывать умножение на каком-либо шаге и довольствоваться приближенной записью исходного числа в системе с основанием P.
Перевод чисел из 10-й системы счисления в 2-ю, из 10-й в 8-ю, из 10-й в 16-ю.
2. При переводе чисел из системы счисления с основанием P в десятичную систему счисления необходимо пронумеровать разряды целой части справа налево, начиная с нулевого, и в дробной части, начиная с разряда сразу после запятой слева направо (начальный номер -1). Затем вычислить сумму произведений соответствующих значений разрядов на основание системы счисления в степени, равной номеру разряда. Это и есть представление исходного числа в десятичной системе счисления.
Кодирование данных двоичным кодом.
По мере развития техники появлялись разные способы кодирования информации. Во второй половине XIX века американский изобретатель Сэмюэль Морзе изобрел код, применяющийся до настоящего времени. Информация кодируется тремя символами: длинный сигнал (тире), короткий сигнал (точка), нет сигнала (пауза) - для разделения букв.
В вычислительной технике существует своя система - она называется двоичным кодированием и основана на представлении данных последовательностью всего двух знаков: 0 и 1. Эти знаки называются двоичными цифрами, по-английски - binary digit или сокращенно bit (бит).
Одним битом могут быть выражены два понятия: 0 или 1 (да или нет, черное или белое, истина или ложь и т.п.). Если количество битов увеличить до двух, то уже можно выразить четыре различных понятия: 00 01 10 11. Тремя - соответственно восемь.
Увеличивая на единицу количество разрядов в системе двоичного кодирования, увеличивается в два раза количество значений, которое может быть выражено в данной системе, по формуле N=2 в степени m, где N - количество независимых кодируемых значений, m - разрядность двоичного кодирования.
Кодирование данных двоичным кодом.
Существуют два основных формата представления чисел в памяти компьютера. Один из них используется для кодирования целых чисел, второй (так называемое представление числа в формате с плавающей точкой) используется для задания некоторого подмножества действительных чисел.
Множество целых чисел, представимых в памяти ЭВМ, ограничено. Диапазон значений зависит от размера области памяти, используемой для размещения чисел. В k-разрядной ячейке может храниться 2k различных значений целых чисел.
Чтобы получить внутреннее представление целого положительного числа N, хранящегося в k-разрядном машинном слове, необходимо перевести число N в двоичную систему счисления, а полученный результат дополнить слева незначащими нулями до k разрядов.
Наример, чтобы получить внутреннее представление целого числа 1607 в 2-х байтовой ячейке,нужно перевести число в двоичную систему: 160710 = 11001000111(2). Внутреннее представление этого числа в ячейке будет следующим: 0000 0110 0100 0111.
Для записи внутреннего представления целого отрицательного числа (-N) необходимо получить внутреннее представление положительного числа N, получить обратный код этого числа заменой 0 на 1 и 1 на 0 и к полученному числу прибавить 1.
Кодирование вещественного числа по Формату с плавающей точкой использует иные алгоритмы.
Кодирование текста.
Множество символов, используемых при записи текста, называется алфавитом. Количество символов в алфавите называется его мощностью.
Для представления текстовой информации в компьютере чаще всего используется алфавит мощностью 256 символов. Один символ из такого алфавита несет 8 бит информации, т. к. 28 = 256. Двоичный код каждого символа(8 бит) занимает 1 байт памяти ЭВМ.
Все символы такого алфавита пронумерованы от 0 до 255, а каждому номеру соответствует 8-разрядный двоичный код от 00000000 до 11111111. Этот код является порядковым номером символа в двоичной системе счисления.
Для разных типов ЭВМ и операционных систем используются различные таблицы кодировки, отличающиеся порядком размещения символов алфавита в кодовой таблице. Международным стандартом на персональных компьютерах является уже упоминавшаяся таблица кодировки ASCII.
Принцип последовательного кодирования алфавита заключается в том, что в кодовой таблице ASCII латинские буквы (прописные и строчные) располагаются в алфавитном порядке. Расположение цифр также упорядочено по возрастанию значений.
Стандартными в этой таблице являются только первые 128 символов, т. е. символы с номерами от нуля (двоичный код 00000000) до 127 (01111111). Сюда входят буквы латинского алфавита, цифры, знаки препинания, скобки и некоторые другие символы. Остальные 128 кодов, начиная со 128 (двоичный код 10000000) и кончая 255 (11111111), используются для кодировки букв национальных алфавитов, символов псевдографики и научных символов.
Кодирование графической информации.
В видеопамяти находится двоичная информация об изображении, выводимом на экран. Почти все создаваемые, обрабатываемые или просматриваемые с помощью компьютера изображения можно разделить на две большие части - растровую и векторную графику.
Растровые изображения представляют собой однослойную сетку точек, называемых пикселами (pixel, от англ. picture element). Код пиксела содержит информации о его цвете. Для черно-белого изображения (без полутонов) пиксел может принимать только два значения: белый и черный (светится - не светится), а для его кодирования достаточно одного бита памяти: 1 - белый, 0 - черный.
Пиксел на цветном дисплее может иметь различную окраску, для кодирования 2 в степени n-цветного изображения требуются т бит на пиксел, поскольку они могут принимать 2 в степени n различных состояний. Если иметь возможность управлять интенсивностью (яркостью) свечения базовых цветов, то количество различных вариантов их сочетаний, порождающих разнообразные оттенки, увеличивается. Как пример, может использоваться такой вариант кодировки цветов: 00 - черный, 10 - зеленый, 01 - красный, 11 - коричневый.
На RGB-мониторах разнообразие цветов получается сочетанием базовых цветов - красного (Red), зеленого (Green), синего (Blue), из которых можно получить 8 комбинаций.
RGB - модель. CMY - модель.
Существуют и расширенные таблицы цветов, зависящие от количества разрядов.
Векторное изображение ― это графический объект, состоящий из элементарных отрезков и дуг. В противоположность растровой графике векторное изображение многослойно. Каждый элемент векторного изображения - линия, прямоугольник, окружность или фрагмент текста - располагается в своем собственном слое, пикселы которого устанавливаются независимо от других слоев. Каждый элемент векторного изображения является объектом, который описывается с помощью специального языка (математических уравнения линий, дуг, окружностей и т. д.). Сложные объекты (ломаные линии, различные геометрические фигуры) представляются в виде совокупности элементарных графических объектов. Объекты векторного изображения, в отличии от растровой графики, могут изменять свои размеры без потери качества (при увеличении растрового изображения увеличивается зернистость). Базовым элементом изображения является линия. Как и любой объект, она обладает свойствами: формой (прямая, кривая), толщиной., цветом, начертанием (пунктирная, сплошная). Замкнутые линии имеют свойство заполнения (или другими объектами, или выбранным цветом). Все прочие объекты векторной графики составляются из линий.
Также существует фрактальная графика, основываеющаяся на математических вычислениях, как и векторная. Но в отличии от векторной ее базовым элементом является сама математическая формула. Это приводит к тому, что в памяти компьютера не хранится никаких объектов и изображение строится только по уравнениям. При помощи этого способа можно строить простейшие регулярные структуры, а также сложные иллюстрации, которые имитируют ландшафты.
Кодирование звука.
Звук ― это колебания воздуха. Если преобразовать звук в электрический сигнал (например, с помощью микрофона), можно видеть плавно изменяющееся с течением времени напряжение. Для компьютерной обработки такой - аналоговый - сигнал преобразовывается в последовательность двоичных чисел.
Измеряется напряжение через равные промежутки времени и полученные значения записываются в память компьютера. Этот процесс называется дискретизацией (или оцифровкой), а устройство, выполняющее его - аналого-цифровым преобразователем (АЦП).
Для того чтобы воспроизвести закодированный таким образом звук, нужно выполнить обратное преобразование (для него служит цифро-аналоговый преобразователь - ЦАП), а затем сгладить получившийся ступенчатый сигнал.
Чем выше частота дискретизации (т. е. количество отсчетов за секунду) и чем больше разрядов отводится для каждого отсчета, тем точнее будет представлен звук. Но при этом увеличивается и размер звукового файла. Поэтому в зависимости от характера звука, требований, предъявляемых к его качеству и объему занимаемой памяти, выбирают некоторые компромиссные значения. Этот способ кодирования звуковой информации достаточно универсален, позволяет представить любой звук и преобразовывать его различными способами.
Человек издавна использует довольно компактный способ представления музыки - нотную запись. В ней специальными символами указывается, какой высоты звук, на каком инструменте и как сыграть. Ее можно считать алгоритмом для музыканта, записанным на особом формальном языке. В 1983 г. ведущие производители компьютеров и музыкальных синтезаторов разработали стандарт, определивший такую систему кодов. Он получил название MIDI.
Такая система кодирования не позволяет записывать все звуки, она годится только для инструментальной музыки, но имеет преимущества: чрезвычайно компактная запись, естественность для музыканта (практически любой MIDI-редактор позволяет работать с музыкой в виде обычных нот), легкость замены инструментов, изменения темпа и тональности мелодии.
Существуют и другие, чисто компьютерные, форматы записи музыки. Среди них следует отметить формат MP3, позволяющий с очень большим качеством и степенью сжатия кодировать музыку. При этом вместо 18-20 музыкальных композиций на стандартный компакт-диск (CDROM) помещается около 200. Одна песня занимает примерно 3,5 Mb, что позволяет пользователям сети Интернет легко обмениваться музыкальными композициями.
|
|