Разработка генератора паролей

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

° данных происходит с использованием функций F, G, H, I.

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

Все необходимые функции и обозначения рассмотрены. Теперь рассмотрим, как происходит просчет результата:

. Запоминаем первые 512 бит последовательности S.

. Удаляем первые 512 бит последовательности S (можно обойтись и без удаления, но тогда на первом шаге надо брать не первые 512, а следующие 512 бит).

. Вызываем функцию W. Параметры A,B,C,D - это текущие значения соответствующих двойных слов. Параметр T - это запомненные 512 бит.

. Прибавляем к A A0.

. B=B+B0.

. C=C+C0.

. D=D+D0.

. Если длина последовательности 0, выходим.

. Переходим к шагу 1.

После выполнения этого алгоритма A,B,C,D - это результат (его длина будет 128 бит). Часто можно видеть результат MD5 как последовательность из 32 символов 0..f. Это то же самое, только результат записан не в двоичной системе счисления, а в шестнадцатеричной.

 

Концепция объектно-ориентированного программирования

 

Основные понятия объектно-ориентированного программирования: инкапсуляция, наследование и полиморфизм.

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

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

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

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

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

Объект - это экземпляр некоторого класса объектов или просто класса. Так автомобиль Audi 6 является экземпляром класса автомобилей данной модели, приемник Sony SW-7600G так же будет представителем класса одноименных приемников. Таким образом, класс - это абстрактное понятие. Отношение класса и объекта примерно такое же, как платоновские идеи и объекты реального мира. На UML - унифицированном языке моделирования - класс отображается в виде прямоугольника, разделенного на три части. В первой содержится имя класса, во второй - атрибуты, в третьей - методы (рис. 1, а).

Классы могут быть связаны друг с другом различными отношениями. Одним из основных таких отношений является отношение класс - подкласс, известный в объектно-ориентированном программировании как наследование. Например, класс автомобилей Audi 6 является подклассом легковых автомобилей, который в свою очередь входит в более крупный класс автомобилей, а последний является подклассом класса транспортных средств, который помимо автомобилей включает в себя самолеты, корабли поезда и т. д. Примером подобных отношений, являются системы классификации в ботанике и зоологии. Отношением, обратным наследованию, является обобщение или генерализация. Она указывает, что некий класс, является более общим (обобщенным) классом другого класса. Класс транспортных средств, к примеру, является генерализацией классов автомобилей, самолетов и кораблей. В UML принято пользоваться именно понятием генерализация, что отразилось и в символе, представляющем это отношение: большая не закрашенная стрелка, направленная на класс, являющимся обобщением некоторых классов (рис. 1, б).

 

Рис. 1. Изображения класса и отношений генерализации в UML: а - изображение класса; б - одиночное наследование; с - множественное наследование

При наследовании все атрибуты и методы родительского класса наследуются классом-потомком. Наследование может быть многоуровневым, и тогда классы, находящиеся на нижних уровнях иерархии, унаследуют все свойства (атрибуты и методы) всех классов, прямыми или косвенными потомками которых они являются. Класс B унаследует атрибуты и методы класса A и, следовательно, будет обладать атрибутами A, B, C и D и методами A, B, C и D, а класс C - атрибутами A, B, C, E, F и методами A, B и E.

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