Разработка генератора паролей
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
Введение
В наше время информация играет важную роль в мире. Не менее важную роль играет защита информации, призванная скрыть от ненужных глаз важные для людей данные. Один из способов защиты информации - паролирование.
Паролирование сейчас применяется повсеместно. Чаще всего паролирование встречается в Интернете. Однако и в жизни часто встречаются пароли: например, банкомат требует ПИН-код, который тоже является паролем. Такой же код требуется ввести при включении телефона.
Пароль - это секретное слово или набор символов, предназначенный для подтверждения личности или полномочий. Пароли часто используются для защиты информации от несанкционированного доступа. В большинстве вычислительных систем комбинация имя пользователя - пароль используется для удостоверения пользователя. Паролирование - основной способ защиты информации.
Для повышения безопасности обычно используются следующие методы:
Ограничение минимальной длины пароля.
Требование повторного ввода пароля после определенного периода бездействия.
Требование периодического изменения пароля.
Назначение стойких паролей (генерируемых с использованием аппаратного источника случайных чисел, либо с использованием генератора псевдослучайных чисел, выход которого перерабатывается стойкими хэш-преобразованиями).
Исследования показывают, что около 40 % всех пользователей выбирают пароли, которые легко угадать автоматически. Легко угадываемые пароли (123, admin) считаются слабыми и уязвимыми. Пароли, которые очень трудно или невозможно угадать, считаются более стойкими.
Часто требуют следующие требования к паролям:
Пароль не должен быть слишком коротким, поскольку это упрощает его взлом полным перебором. Наиболее распространенная минимальная длина - восемь символов. По той же причине он не должен состоять из одних цифр.
Пароль не должен быть словарным словом или простым их сочетанием, это упрощает его подбор по словарю.
Пароль не должен состоять только из общедоступной информации о пользователе.
В качестве рекомендацией к составлению пароля можно назвать использование сочетания слов с цифрами и специальными символами (#, $, * и т.д.), использование малораспространенных или несуществующих слов, соблюдение минимальной длины.
Для большей безопасности применяют сложные пароли. Однако не все сложные пароли можно придумать в голове. Плюс, придуманные пароли нужно где-то хранить. Притом хранить нужно так, чтобы лишние глаза эти пароли не видели. Для реализации функции создания и хранения паролей была создана эта программа.
Для генерирования паролей программа использует отдельный класс. Список паролей представляет собой таблицу, из которой, по нажатию на определённую ячейку, можно скопировать данные в буфер обмена. Кроме того, в эту таблицу можно занести заметку и флаг. Любую таблицу можно сохранить в файл, притом зашифрованный. Файл можно защитить от открытия чужими людьми особым паролем, до ввода которого список паролей не будет виден.
Обзор основных существующих языков программирования
С++ - это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.
Ключевым понятием С++ является класс. Класс - это тип, определяемый пользователем. Классы обеспечивают сокрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. С++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline-подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В С++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем.
С++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из С++ программ можно использовать C библиотеки, и с С++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C.
Java - объектно-ориентированный язык программирования,