Разработка мобильного приложения для ОС Android с использованием симметричного шифрования Blowfish

Описание приложения для OC Android разработанного на языке программирования высокого уровня Python использующего аппаратное обеспечение телефона для создания и передачи зашифрованных с использованием ассиметричного шифрования "Blowfish" QR кодов.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид дипломная работа
Язык русский
Дата добавления 07.08.2018
Размер файла 4,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Федеральное агентство связи

Федеральное государственное бюджетное образовательное учреждение высшего образования

«Поволжский государственный университет телекоммуникаций и информатики»

Факультет Информационных систем и технологий

Направление (специальность) Информационные системы и технологии

Кафедра Информационных систем и технологий

ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА

(БАКАЛАВРСКАЯ РАБОТА)

Разработка мобильного приложения для ОС Android с использованием симметричного шифрования Blowfish

Руководитель

профессор д.т.н., профессор

М.А.Кораблин

Разработал ИСТ-32

А.В. Алексеев

Самара 2017

Федеральное агентство связи

Федеральное государственное бюджетное образовательное учреждение высшего образования «Поволжский государственный университет телекоммуникаций и информатики»

ЗАДАНИЕ

по подготовке выпускной квалификационной работы

Студента Алексеева Алексея Владимировича

1 Тема ВКР Разработка мобильного приложения для OC Android c использованием симметричного шифрования Blowfish

Утверждена приказом по университету от 03.04.2017 № 74 - 2

2 Срок сдачи студентом законченной ВКР 15.06.2017

3 Исходные данные и постановка задачи

3.1 Исходные данные

1)Обзор и анализ теоретического материала по теме исследования

2)Особенности разработки мобильных приложений

3.2 Постановка задачи

1) Изучить принципы разработки мобильных приложений

2) Установить необходимое программное обеспечение

3) Спроектировать мобильное приложение

4 ) Разработать мобильное приложение

5) Произвести анализ выполненной работы

4 Перечень подлежащих разработке в ВКР вопросов или краткое содержание ВКР. Сроки исполнения 15.04.2017

1) Анализ методов разработки мобильных приложений

2)Выбор программных средств реализации системы

3)Проектирование пользовательского интерфейса

4) Проектирование базы данных системы

5)Разработка физической модели базы данных

6)Написание исходного кода приложения

5 Перечень графического материала. Сроки исполнения 14.06.2017

Презентационный материал

6 Дата выдачи задания « 9 » апреля 2017 г.

Кафедра Информационных систем и технологий

Утверждаю зав.кафедрой, д.т.н., доцент Н.И. Лиманова

Руководитель профессор д.т.н., профессор М.А.Кораблин

Задание принял к исполнению ИСТ-32 А.В.Алексеев

Федеральное агентство связи

Федеральное государственное бюджетное образовательное учреждение высшего образования «Поволжский государственный университет телекоммуникаций и информатики»

ПОКАЗАТЕЛИ КАЧЕСТВА ВКР

По ВКР студента

Алексеева Алексея Владимировича

На тему Разработка мобильного приложения для OC Android с использованием симметричного шифрования Blowfish

1 Работа выполнена :

- по теме, предложенной студентом

- по заявке предприятия наименование предприятия

- в области фундаментальных и поисковых научных исследований указать область исследований

2 Результаты ВКР:

- рекомендованы к опубликованию указать где

- рекомендованы к внедрению указать где

- внедрены акт внедрения

3 ВКР имеет практическую ценность ? Мобильное приложение для OC Android в чем заключается практическая ценность

4 Использование ЭВМ при выполнении ВКР: (ПО, компьютерное моделирование, компьютерная обработка данных и др.)

БД, Средства разработки программного обеспечения

5. ВКР прошла проверку на объем заимствований

____% заимствований______________________

эл. версия сдана

Студент ИСТ-32 А.В. Алексеев

Руководитель ВКР проф. д.т.н., проф. М. А. Кораблин

Введение

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

Сотни видов новых устройств оснащены дополнительными модулями такими как: GPS, акселерометр, NFC, и тачскрин, дополненными сравнительно большими объёмами памяти создают платформу для разработчиков для создания всё новых инновационных приложений для Android.

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

Используя Google Play, разработчики получили доступ к свободной площадке для распространения своих платных, а также бесплатных приложений для всех совместимых Android устройств. Разработанный на открытом программном обеспечении с участием мощных комплектов средств разработки Android позволил создать тысячи приложений, представленных в Google Play.

Существует огромное количество приложений для передачи сообщений определённому кругу людей. Один из таких способов - создание специальных штрих кодов, называемых QR коды. Позволяющих получить информацию с физического носителя без необходимости ручного ввода. Скомбинировав эту функцию с быстрым и надёжным алгоритмом шифрования информации можно получить приложение для удобного и безопасного обмена сообщениями “у всех на виду”. Это, а также отсутствие аналогов на рынке обусловило актуальность разработки приложения для операционной системы Android реализующего функцию передачи QR кода с шифрованием blowfish. приложение аndroid телефон

Для достижения данной цели нужно выполнить следующие задачи:

* Изучить архитектуру операционной системы Android.

* Изучить принципы разработки приложений для OC Android

* Выбрать технический инструментарий разработки приложений.

* Изучить выбранный технический инструментарий.

* Разработать интерфейс приложения.

* Разработать алгоритм приложения.

Объектом исследования является разработка приложений на базе операционной системы Android.

Предметом исследования является приложение для OC Android разработанное на языке программирования высокого уровня Python использующее аппаратное обеспечение телефона для создания и передачи зашифрованных с использованием ассиметричного шифрования Blowfish QR кодов.

Основными источниками информации для написания работы послужили

* Эндрю Стюарт Танненбаум «операционные системы 4 издание». Издательство: Питер, 2015 г.

* Jonathan Simon «Head First Android Development» 4th ed. - O Reilley Media Inc, 2011

* Марк Лутц «Программирование на Python» Издательство: Символ-плюс, 2011

* Reto Meier «Android Application Development » 3rd ed. - John Wiley & Sons, Inc., 2012

Цель и задачи написания работы определили ее структуру, которая состоит из введения,3-х глав и заключения.

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

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

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

В третьей главе описана структура реализованного приложения.

В заключении сделаны основные выводы и результаты по проделанной работе.

1. Исследование предметной области

Выбор операционной системы

В данный момент доминирующими операционными системами на рынке мобильных устройств являются OC Android и iOC поэтому выбор делался именно между этими двумя системами.

При выборе ОС важно учитывать количество потенциальных потребителей, по состоянию на декабрь 2016ого года, на долю Android приходится 37,8% всех устройств, в то время как iOC занимает лишь 12,7%. Исходя из данной статистики было принято решение разрабатывать приложение под OC Android (Рис.1.1).

Рис. 1.1 - Рейтинг операционных систем

Ввиду того что разработка под разные версии Android может различаться, и совместимость приложения со всеми версиями не гарантирована, необходимо определить минимальный порог версии приложения. По состоянию на конец 2016ого года консервативных пользователей, использующих версии Android ниже KitKat, осталось всего 11% от общего числа потребителей. Учитывая это рационально установить нижний порог версии - 4.4 (Рис 1.2).

Рис. 1.2 - Версии Android

Краткий обзор OC Android

Android - операционная система на основе открытого программного кода Linux для мобильных устройств таких как смартфоны и портативные компьютеры. Разработка Android была начата компанией Android inc. В 2005 году компания была куплена Google.Дальнейшая разработка осуществлялась Open Handset Alliance, во главе с Google. [1]

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

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

1.1 Архитектура

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

Рис. 1.3 - Архитектура OC Android

Уровень ядра представляет собой linux 3.6 c приблизительно 115 патчами. Ядро обеспечивает уровень абстракции между аппаратным обеспечением устройства и остальной частью программного стека. На данном уровне содержатся все основные драйверы аппаратного обеспечения такие как: камера, клавиатура, дисплей и т.д. Также ядро управляет сетью и огромным количеством драйверов устройства.

Над уровнем ядра находится набор библиотек включая веб браузер с открытым кодом WebKit, библиотеку Libc, SQLite базу данных которая является полезным репозиторием для хранения и передачи данных приложений, библиотеки для записи и воспроизведения аудио и видео, SSL библиотеки ответственные за безопасность интернет соединений и т.д.

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

Некоторые из наиболее важных библиотек представлены ниже:

* Android.app - предоставляет доступ к модели приложения и является краеугольным камнем всех приложений.

* Android.content - облегчает публикацию и обмен сообщениями между приложениями и компонентами приложений.

* Android.database - управление классами SQLite базы данных.

* Android.opengl - JAVA интерфейс для Opengl ES 3D графики и рендеру API.

* Android.os - обеспечивает доступ приложениям к стандартным сервисам операционной системы включая сообщения, системные сервисы и внутри процессные взаимодействия.

* Android.text - используется для рендера и изменения текста на экране устройства.

* Android.view - Основные строительные блоки интерфейсов пользовательских приложений.

* Android.widget - богатая коллекция заранее настроенных пользовательских компонентов интерфейса таких как кнопки, заголовки, менеджеры расположения и т.д.

* Android.webkit - набор классов, созданных для возможности встраивания доступа к сети в приложении.

Android Runtime является третьей секцией архитектуры. В этом разделе представлен ключевой компонент - среда выполнения ART (Android Runtime), которая заменила ранее использующуюся виртуальную машину Dalvik. ART использует основные функции Linux такие как управление памятью и мультипоточность, которые свойственны языку Java. ART в отличие от Dalvik компилирует приложение в байт-код во время установки, что позволяет оптимизировать использование оперативной памяти а также снизить время переключения между приложениями и ускорить их запуск.

Уровень структуры приложений:

Уровень структуры приложений предоставляет множество высокоуровневых сервисов для приложений в виде Java классов. Разработчики могут использовать их в своих приложениях.

Уровень приложений:

Все приложения, установленные на устройстве, находятся на этом уровне. [5]

1.2 Общая схема работы и жизненный цикл приложений

По аналогии с Windows OC Android использует в работе окна, которые здесь называются Активности. При переходе между состояниями активность получает уведомления через специальные методы. Обязательный метод OnCreate() вызывается при инициализации активности и задаёт начальные параметры. После чего вызывается метод onStart() до того, как пользователь увидит окно. В случае если активность получает передний план вызывается метод onResume() когда активность получает монопольные ресурсы, и пользователь взаимодействует с окном, либо onStop() если активность становится скрытой. При остановке активности объекты активности хранятся в памяти восстанавливаются в случае возобновления работы окна. Метод onPause() используется при переключении на новое окно. При вызове метода происходит сохранение незафиксированных данных. Метод onDestroy() вызывается по окончании работы активности, в случае, когда система освобождает ресурсы уничтожая активность(Рис 1.4).[4]

Рис. 1.4 - Жизненный цикл приложения

1.3 Обзор аналогичных программных продуктов

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

Первое приложение QrGenerator&Scanner разработчика mEmozz.

Приложение имеет крайне минималистичный дизайн, дополнительные функции отсутствуют, реализован только основной функционал (Рис 1.5).

Рис. 1.5 - QrGenerator&Scanner

Плюсы данного приложения:

* Простой дизайн.

* Отсутствие большого количества навязчивой рекламы.

* Возможность передачи информации через большое количество систем обмена

Минусы приложения вытекают из его простоты:

* Отсутствие истории сканирований

* Отсутствие возможности сохранения отсканированных QRкодов.

* Отсутствие возможности сканирования других матричных кодов

Второе приложение Qr-scanner компании AppsourceHub.Данное приложение гораздо сложнее своего аналога, реализует широкий функционал, но при этом имеет интуитивно понятный интерфейс (Рис 1.6).

Рис. 1.6 - Qr-scanner

Плюсы данного приложения:

* Широкий функционал.

* Интуитивно понятный интерфейс.

* Наличие истории сканирований.

* Возможность сканировать различные матричные коды.

* Возможность сохранять QR коды.

Минусы приложения:

* Передача созданных Qr кодов ограничена тремя площадками.

* Работа приложения прерывается полноэкранной рекламой.

Выбор средств для реализации приложения.

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

1.4 Выбор языка программирования

Язык программирования -- формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно -- ЭВМ) под её управлением. Разработка нативных приложений для Android обычно происходит на языке программирования Java с использованием комплекта для разработки программного обеспечения(SDK).

Нативные мобильные приложения -- это приложения требующие установки на устройство. Нативные приложения разрабатываются под конкретную платформу, например, Android или IOS. Такие приложения обеспечивают высокую производительность и высокую степень надёжности. Они также имеют доступ к различным аппаратным средствам устройства, таким как камера или акселерометр. Немаловажным свойством нативных приложений является сохранение работоспособности при отсутствии интернет соединения.

Java - высокоуровневый объектно-ориентированный язык программирования, выпущенный компанией Sun Microsystems 23 мая 1995 года. Изначально разрабатывался под названием Oak как язык для передового программирования бытовой электроники. Реализация проекта планировалась на языке C++, но вскоре стало понятно, что необходим язык, не зависящий от архитектуры, на которой он выполняется, так Oak был переименован в Java и стал использоваться для написания программного обеспечения.

Особенностью разработки на Java является то, что программы на Java транслируются в байт-код, который выполняется на виртуальной Java машине - специальном обработчике байт-кода передающем инструкции оборудованию. [2] Это позволяет создавать программы, которые нет необходимости компилировать отдельно для каждой архитектуры на которой планируется выполнение программы. Особенности становления языка Java определили его синтаксис во многом схожий с C и С++. Так в Java передачи параметров, объявления переменных и управление потоком выполнения кода практически идентичны C и C++. Поэтому знание этих языков позволяет значительно упростить изучение Java. [11]

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

Для разработки приложений под управлением операционной системы Android компания Oracle предоставляет бесплатный комплект разработчика приложений (JDK) включающий в себя компилятор, стандартные библиотеки, документацию, примеры, а также различные утилиты необходимые для разработки. Так как Java является родным языком программирования для Android, выбор другого языка лежит скорее в плоскости личных предпочтений ввиду того что связан с определёнными трудностями, выраженными в необходимости установки и настройки специальных программных продуктов называемыми Фреймворками, обеспечивающими возможность кроссплатформенной разработки. Для разработки приложения представленного в данной работе был выбран высокоуровневый язык программирования Python с помощью фреймворка Kivy.

Python - это объектно-ориентированный язык высокого уровня, разработанный Гвидо ван Россумом в 1991 году. Основой философии Python является ориентированность на повышение производительности разработчика и читаемости кода. В связи с этим синтаксис данного языка спроектирован таким образом, чтобы быть легко читаемым как самому программисту, так и другим людям. Простота и логичность синтаксиса обеспечивает Питону звание языка программирования с самым низким порогом вхождения и делает его идеальным языком для изучения новичкам. [9]

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

В Java необходимо указывать тип переменной при объявлении и нет возможности сменить его позднее в программе. Такой способ определения переменных называется статическая типизация. Python напротив использует динамическую типизацию, что позволяет менять тип переменной, например заменяя строку на целочисленное значение. [12] Такой способ типизации упрощает процесс разработки, но связан с риском ошибок. [3]

Другим важным отличием является использование Питоном отступов чтобы разделять код на блоки, в то время как в большинстве языков программирования приняты фигурные скобки, благодаря чему код просто читать и нет вероятности допустить ошибку не закрыв скобки.[13] Python является интерпретируемым языком Java в свою очередь компилируемо-интерпретируемый в виду наличия виртуальной машины выступающей интерпретатором.[10] В целом при выполнении программ на Android Java работает быстрее чем Python, особенно после отказа от виртуальной машины Dalvik которая использовала компиляцию JIT(just in time) подразумевающую компиляцию “на лету”, что приводило к нерациональному использованию оперативной памяти а так же задержкам при выполнении программ, в пользу ART(Android RunTime) которая использует подход AOT(Ahead of time) заключающийся в том что приложение компилируется при установке и таким образом существенно повышается производительность.

1.5 Выбор интегрированной среды разработки

Интегрированная среда разработки или IDE это инструмент, который используется не только для написания кода. Обычно IDE имеют встроенные инструменты разработки, а также отладчик. Чаще всего среда разработки специализирована под определённый язык или платформу. Например, существуют IDE для разработки на python, PHP, JavaScript или для разработки под Android.

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

Некоторые наиболее популярные среды для разработки на Python рассмотрены ниже.

Pydev с Eclipse.

Pydev ide для python пользуется большой популярностью среди широких масс разработчиков благодаря тому что данная среда разработки является бесплатной а также имеет мощные функции для эффективной разработки. pydev это плагин с открытым кодом который запускается поверх Eclipse.

Основные достоинства pydev заключаются в поддержке интеграции с Django, авто завершение ввода, поддержка большого количества языков, встроенный отладчик Python, анализ кода, интеллектуальный отступ, сопоставление скобок, разметка ошибок, встроенный контроль версий, свертка участков кода, редактирование и отображение диаграмм UML что полезно при разработке больших проектов.

Проект был создан в 2004ом году программистом AleksTtotic а сейчас управляется и поддерживается Fabio Zadrozny. Pydev регулярно обновляется благодаря развитому сообществу разработчиков а также многочисленным спонсорам.

Pydev можно назвать лучшим бесплатным IDE для разработки на Python (Рис.1.7).

Рис. 1.7 - Pydev с Eclipse

VIM

VIM один из самых передовых текстовых редакторов и очень популярен во всём сообществе разработчиков на Python. Он имеет открытый код и распространяется бесплатно под лицензией GPL.

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

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

1

Рис. 1.8 - Текстовый редактор ViM

Pycharm

Pycharm полноценный Ide для разработки на Python от отечественной компании JetBrains. JetBrains разрабатывает новейшее программное обеспечение для разработчиков более 15ти лет и нацелена на то чтобы сделать разработку проще и приятнее.

Pycharm распространяется в двух версиях - бесплатная версия сообщества а также более полная версия для профессиональных разработчиков. Популярность этой Ide может быть обусловлена тем что такие знаменитые компании как Twitter, Groupon, Spotify, ebay и Telefonica также используют Pycharm.

Большинство необходимых функций присутствуют в бесплатной версии включая интеллектуальное завершение написанного кода, интуитивная навигация по проектам, проверка и исправление ошибок “на лету”, обеспечение качества кода по PEP8 и умный рефакторинг, Графический отладчик и тестовый запуск.

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

Рис. 1.8 - Интегрированная среда разработки Pycharm

Важнейшей особенностью PyCharm является поддержка множества сторонних фреймворков для разработки Web и не только. В частности, данный IDE довольно просто “подружить” c фреймворком Kivy который использовался для разработки приложения представленного в данной работе. Всё вышесказанное определило выбор именно этого Ide для разработки приложения (Рис. 1.8).

Фреймворк Kivy

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

Для разработки приложения был выбран Фреймворк Kivy. Kivy - кросс-платформенный Фреймворк для разработки мобильных приложений с нативным интерфейсом пользователя. Kivy создан на языках Python и Cython, основан на графическом интерфейсе OpenGL ES 2, виджеты создаваемые с помощью Kivy имеют поддержку мультитач. Данный фреймворк включает в себя все элементы необходимые для создания приложения:

* Расширенную поддержку ввода для мыши, клавиатуры, мультитач.

* Графическую библиотеку OpenGL ES 2.

* Огромное количество виджетов с поддержкой мультитач.

* Язык разметки Kv использующийся для простого создания костомных виджетов.

Kivy organization занимающаяся разработкой и поддержкой данного фреймворка предоставляет ряд инструментов для полноценного создания приложений. Одним из основных является Python for Android - инструмент, позволяющий упаковать Python код в автономный APK файл который можно передать, установить, или выложить в Play Market как любое другое приложение Android. Фактически данный инструмент создаёт директорию, в которой находятся все составляющие приложения: интерпретатор, библиотеки, а также сам Kivy. Кроме того, в ней находится загрузчик Java являющийся посредником между Kivy и ОС. Также в дистрибутив может быть добавлено любое количество дополнительных модулей. Другой важной функцией является предоставление простого интерфейса для сборки APK со всеми необходимыми параметрами. Процесс сборки APK можно полностью автоматизировать, используя специальную надстройку над Python for Android называемую Buildozer. При упаковке APK через Buildozer создаётся файл Buildozer.spec в корневой директории приложения где описаны зависимости приложения, а также настройки такие как: название, иконка, включённые модули и т.д. используя этот файл будет создан пакет установки для выбранной операционной системы. К сожалению использование этого мощного инструмента возможно только с помощью Unix систем.

Создание полноценного приложения невозможно без доступа к аппаратному обеспечению устройства: камере, гироскопу, вибрации, информации с сенсоров и т.д. Для обращения к Android API можно использовать инструмент PyJNIus.

Android API:

Платформа Android предоставляет фреймворк API, которое могут использовать приложения для взаимодействия с нижележащей системой Android. фреймворк API состоит из:

* Базового набора пакетов и классов.

* Набора элементов XML и атрибутов для декларирования в файле манифеста.

* Наборов элементов XML и атрибутов для декларирования и доступа к ресурсам

* Набора намерений

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

PyJNIus оборачивает код на Java в интерфейс Python. Другими словами, это модуль для доступа к классам Java используя классы Python. Фактически любые Android API могут быть вызваны с помощью этого инструмента. Тем не менее написание кода через PyJNIus требует от разработчика глубинного понимания структуры API, а сам код по объёму не отличается от Java. Эта проблема была решена созданием проекта Plyer который предоставляет доступ к функциям, обычно встречающимся на определённых платформах, в простом “питоновском” стиле. Реализуется это путём вызова необходимых внешних библиотек в зависимости от текущей платформы, для Android - PyJNIus, для IOS - pyobjus. В результате размер кода сокращается в разы. [14]

1.6 База данных

Для работы с базами данных в Android используется движок SQLite. SQLite - это встроенная библиотека которая реализует автономный, без серверный, не нуждающийся в установке и настройке механизм транзакций SQL. В сравнении с аналогами такими как MySQL или PostgreSQL SQLite имеет ряд преимуществ, делающих этот движок идеальным решением в разработке не слишком крупногабаритных приложений, какими и являются мобильные приложения. SQLite не требует установки перед использованием. Отсутствует процесс сервера, который надо было бы запускать или настраивать. SQLite является однопользовательским движком, технология клиент-сервер отсутствует, а следовательно нет необходимости в назначении прав доступа или создании новых экземпляров базы данных. Большинство SQL движков реализованы как отдельный серверный процесс. Программы, которые хотят получить доступ к базе данных используют меж процессную связь, обычно стек протоколов TCP/IP для того чтобы посылать запросы на сервер и получать назад результаты. SQLite не работает по такому принципу. В место этого процесс, который хочет получить доступ к базе данных читает и пишет данные напрямую из базы данных хранящийся на диске. Основным преимуществом такого подхода является отсутствие сервера, а, следовательно, и отсутствие необходимости настраивать, устанавливать и сопровождать ещё один процесс. С другой стороны, серверные движки обеспечивают лучшую защиту от ошибок в клиентском приложении - блуждающие указатели на клинском приложении не могут повредить память на сервере. А также из-за того, что сервер является отдельным постоянным процессом лучше реализуется контроль доступа к базе данных. SQLite база данных представляет собой обычный файл который может находится в любом месте иерархии директорий. Если директория и файл базы данных доступны для записи, SQLite может производить любые изменения в базе данных. Файл базы данных легко можно передавать любым удобным способом. SQLite использует кроссплатформенный формат файлов. Это означает, что база данных может быть создана на одной машине и использована на другой, с отличной архитектурой. При этом не имеет значения ни разрядность архитектуры системы ни прямое или обратное размещение байтов. В то время как большинство других движков SQL требуют сброса и восстановления базы данных при переходе на другую платформу. SQLite крайне легковесна, в распакованном виде она занимает всего около 250 Кб что естественно гораздо меньше других движков. Например, Cloudscape база данных весит 2Мб. В связи с размерами этого движка возникает закономерный вопрос: Насколько он функционален? Разумеется, до таких больших движков как Oracle или PostgreSQL SQLite не дотягивает, многие функции отсутствуют, но основного функционала этого движка вполне хватает для реализации небольших пользовательских, а иногда и высоко профильных проектов, например, Adobe использует SQLite в таких программах как Photoshop Lightroom и Acrobat Reader, а Dropbox для хранения данных на стороне клиента. Широкие функциональные возможности не являлись основной целью проекта SQLite. Прежде всего упор делался на скорость работы, а также надёжность библиотеки, и с данными задачами SQLite справляется. По результатам многочисленных тестов SQLite превосходит по скорости клиент-серверные движки в 2-3 раза, а при обработке определённых запросов в 20 раз. В свою очередь надёжность гарантирована результатами огромного количества тестов, проведённых на все возможные ошибки. [15]

2. Проектирование приложения

2.1 Формирование требований к разрабатываемому приложению

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

* Возможность создания QR кодов.

* Сканирование и расшифровка с помощью ключа зашифрованных QR кодов.

* Сохранение созданных QR кодов в базе данных для дальнейшего использования.

* Возможность передачи QR кодов с помощью популярных систем обмена сообщениями.

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

2.2 Описание входных и выходных данных

Входными данными являются санируемые Qr коды, строки текста, которые будут зашифрованы, а также пароль для создания и расшифровки защищённых QR кодов.

Выходные данные: созданные QR коды, сохранённые на устройстве QR коды, расшифрованные Qr коды при передаче другим людям.

Проектирование пользовательского интерфейса.

В приложении реализовано 4 основных активности, а также ряд вспомогательных, вызов которых происходит из основных активностей при совершении определённых действий.

При запуске программы по умолчанию открывается активность Сканирование (Рис 2.1), которая содержит три функциональные кнопки при нажатии на которые будет осуществлён переход к другой активности, каждое из которых предоставляет доступ к определённым функциям приложения:

Рис. 2.1 - Вкладка сканирование

Пункт меню сканирование предоставляет на выбор переход к трём активностям:

* Сканирование

* Менеджер паролей

* Считать из файла.

В активности сканирование (Рис 2.2) открыта камера с подключенным модулем, реализующим функцию постоянного считывания изображения на наличие QR кода. После успешного сканирования приложение выведет результат в новом окне.

Рис. 2.2 - Активность сканирование

Код считан неверно (Рис. 2.3). Информация, содержащаяся в коде, была зашифрована с использованием симметричного шифрования Blowfish.

Рис. 2.3 - отсканированный QRкод

BlowFish -- алгоритм 64-битного блочного шифра с ключом переменной длины. Был разработан известным специалистом в области криптографии и защиты информации Брюсом Шнайером (Bruce Schneier) в 1993 году.

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

На этапе расширения ключа, исходный ключ преобразуется в матрицу раундовых ключей (P) и матрицу подстановки (S, Substitution-box) (или замены), общим объемом в 4168 байт. По всей вероятности, этим «расширением» (от 448 бит до 4168 байт) и объясняется выбор названия алгоритма Blowfish.

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

В 1971 году, «крестный отец» стандарта DES, Хорст Фейстель (Horst Feistel), в стенах корпорации IBM, разработал два устройства, реализовавшие различные алгоритмы шифрования, названные затем общим название «Люцифер». В одной из этих устройств он использовал схему, которую впоследствии назвали Сетью Фейстеля. Эта сеть представляет собой определённую многократно итерированную (повторяющуюся) структуру, которою называют ячейкой Фейстеля.

Принцип работы сети достаточно прост:

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

* Блок делится на два равных подблока -- «левый» L0 и «правый» R0.

В случае 64-битной разрядности -- на два блока с длиной 32 бита каждый.

* «Левый подблок» L0 видоизменяется функцией итерации F (L0, P0) в зависимости от ключа P0, после чего он складывается по модулю 2 (XOR) с «правым подблоком» R0.

* Результат сложения присваивается новому левому подблоку L1, который становится левой половиной входных данных для следующего раунда, а «левый подблок» L0 присваивается без изменений новому правому подблоку R1, который становится правой половиной.

* Эта операция повторяется n-1 раз, при этом при переходе от одного этапа к другому меняются раундовые ключи (P0, P1, P2 и т.д.), где n -- количество раундов для используемого алгоритма.

Процесс расшифровывания аналогичен процессу шифрования за исключением того, что раундовые ключи используются в обратном порядке. Для того чтобы QR код был расшифрован верно необходимо ввести ключ, либо ключ уже должен присутствовать в базе данных приложения. После переключения ползунка в положение “шифрованный” появляется поле ввода ключа для расшифровки (Рис 2.4).

Рис. 2.4 - Расшифровка с использованием ключа.

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

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

Управление, добавление и удаление ключей происходит через виджет менеджер паролей (Рис 2.5).

Рис. 2.5 - Пункт меню Менеджер паролей.

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

В пункте меню Create находится виджет реализующий возможность создания QR кодов, как зашифрованных через Blowfish, так и классических (рис 2.6).

Рис. 2.6 - Пункт меню Create.

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

Во вкладке диплома History реализовано отображение истории сканирований, взятое из базы данных (Рис 2.7).

Рис. 2.7 - Пункт меню History

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

Последним в списке меню является окно настроек, которое будет реализовывать изменения интерфейса и поведения приложения (Рис 2.8).

Рис. 2.8 - Окно настроек.

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

2.2 Создание базы данных

2.2.1 Базы данных и системы управления базами данных

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

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

Система управления базами данных - это программное обеспечение для создания и управления базой данных. СУБД позволяет пользователям и программистам в систематическом виде создавать, обновлять и управлять данными.

Функциональные возможности систем управления базами данных:

* Средства постоянного хранения данных. СУБД реализуют возможность хранения больших объёмов данных в независимости от процессов их использования.

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

* Управление транзакциями. Транзакция -- атомарное действие над базой данных, переводящие базу данных между целостными состояниями. Последовательность команд воспринимается как единое целое. Иными словами, реализуется принцип “всё либо ничего”, транзакция -- это последовательность операций, которые полностью выполняются либо полностью не выполняются.

Все системы управления базами данных делятся на два типа:

* Локальные

* Сетевые

Локальные системы управления базами данных вместе с базой данных находятся на компьютере пользователя. Так как такие СУБД работают автономно возникают проблемы с совместной работой нескольких пользователей в одной базе данных.

Серверные системы управления базами данных делятся на два типа файл-серверные и клиент-серверные. Основным атрибутом таких СУБД является наличие сети для обеспечения совместной работы с БД.

Модель данных - основа любой базы данных. Она реализуется в структурах данных и методах их обработки. Основные типы моделей данных:

* Иерархическая

* Сетевая

* Реляционную

Иерархическая БД - модель данных в которой данные организованы в древовидной структуре. Данные хранятся как записи, которые соединены друг с другом с помощью связей. Запись представляет собой коллекцию из полей, каждое поле хранит только одно значение. Тип сущности записи определяет какие поля запись содержит.

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

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

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

При проектировании любой базы данных необходимо задать ее структуру. Проектирование можно разделить на несколько основных этапов:

* Определение сущностей.

* Определение связей между сущностями.

* Определение атрибутов.

* Определение первичных ключей

2.3 Постановка задачи

Необходимо разработать базу данных для приложения Secure QRcode. База данных необходима для того чтобы исключить необходимость в повторном вводе требуемых данных. А также систематизации хранимых данных.

2.4 Проектирование базы данных

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

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

* Включает в себя все сущности и связи между ними.

* Конкретизируются все атрибуты сущностей.

* Определяются первичные ключи для каждой сущности

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

* На этом уровне происходит нормализация.

В соответствии с этапами разработки приступим к проектированию базы данных

Первым этапом является определение сущностей.

База данных будет состоять из трёх сущностей:

Первая сущность QR, в данной сущности хранятся данные относящиеся непосредственно к QR кодам.

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

Третья сущность называется Настройки и в ней хранятся данные о настройках приложения.

Второй этап определение связей между сущностями:

Сущности QR и Пароли имеют между собой связь один ко многим, одному паролю может соответствовать несколько QR кодов. В то время как каждому QR коду соответствует только один пароль.

Сущность Настройка не имеет связей с другими таблицами.

Третий этап Определение атрибутов, а также первичного ключа.

Атрибуты таблицы QR:

* ID, уникальный идентификатор экземпляра QR кода, тип INT, является первичным ключом, пустое, автоинкремент.

* File хранит адрес на файл изображения, тип TEXT, не пустое

* Format хранит формат изображения, тип TEXT, не пустое

* Data хранит дату создания или сканирования QR кода, тип TEXT, не пустое

* Type тип QR кода зашифрованный/классический, тип INT, не пустое

* Text содержит информацию, содержащуюся в QR коде, тип TEXT, не пустое

* Id_Key содержит номер кода из таблицы пароля, тип INT, не пустое

Атрибуты таблицы пароли:

* ID, уникальный идентификатор экземпляра ключа, тип INT, первичный ключ, пустое, автоинкримент

* Key, содержит ключ, тип TEXT, не пустое

* Rating, хранит количество вызовов, тип INT, не пустое

Атрибуты таблицы Настройка:

* Sound, хранит значение переключателя звука, тип INT, не пустое

* Vibro, содержит значение переключателя вибрации в приложении, тип INT, не пустое

* Tema, хранит цветовое оформление, тип TEXT, не пустое

Рис 2.9 - Логическая модель базы данных

2.5 Разработка физической модели БД

Физическая модель данных включает в себя все необходимые таблицы, колонки, связи, настройки даты базы для физической реализации базы данных. Представление базы данных, стратегия индексирования, физическое хранение данных и денормализация являются важными параметрами физической модели. Физическое моделирование учитывает требования, которые были установлены в процессе логического моделирования. В физической модели содержится информация обо всех объектах БД. На физическом уровне основными компонентами физической базы данных являются физические блоки, хранимые записи, указатели, данные переполнения и промежутки между блоками. Взаимосвязи между хранимыми записями, возникающие в результате их группирования или использования индексных структур, могут также рассматриваться как часть физической структуры. Результатом физического проектирования является полностью готовая к внедрению структура базы данных.

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

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

Создание таблиц:

Таблица QR:

CREATE TABLE `QR` (

`ID` INTEGER PRIMARY KEY AUTOINCREMENT,

`File` TEXT NOT NULL,

`Format` TEXT NOT NULL,

`Data` TEXT NOT NULL,

`Type` TEXT NOT NULL,

`Text` TEXT NOT NULL,

`ID_key` INTEGER NOT NULL,

FOREIGN KEY(`ID_key`) REFERENCES `Passwords`(`ID`)

);

Таблица 2.1 Структура таблицы QR

Название поля

Описание

Тип поля

Дополнительно

Id

Уникальный идентификатор

integer

Автоинкремент,

первичный ключ

File

Путь к файлу на устройстве

text

Обязательное

Format

Формат файла

text

Data

Дата создания/сканирования

text

Обязательное

Type

Классический/Зашифрованный

text

Обязательное

Text

Зашифрованная информация

text

Обязательное

ID_Key

Идентификатор ключа

integer

Внешний ключ

Таблица Passwords:

CREATE TABLE `Passwords` (

`ID` INTEGER PRIMARY KEY AUTOINCREMENT,

`Key` TEXT NOT NULL,

`Rating` INTEGER NOT NULL

Таблица 2.2. Структура таблицы Пароли

Название поля

Описание

Тип поля

Дополнительно

Id

Уникальный идентификатор

integer

Автоинкремент,

первичный ключ

Key

Ключ

Text

Обязательное

Rating

Количество вызовов экземпляра ключа

Integer

 Обязательное

Рис 2.10 - Физическая модель базы данных.

Таблица Settings:

CREATE TABLE `Settings` (

`Sound` INTEGER NOT NULL,

`Vibro` INTEGER NOT NULL,

`Tema` TEXT NOT NULL

);

Таблица 2.3. Структура таблицы Настройки

Название поля

Описание

Тип поля

Дополнительно

Sound

Бинарное значение 1-вкл, 0-выкл

integer

Обязательное

Vibro

Бинарное значение 1-вкл, 0-выкл

integer

Обязательное

Tema

Цветовая схема

text

 Обязательное

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

Разработка приложения начинается с создания класса, наследующего класс App. Класс App - база создания приложения. Можно сказать, что он является точкой входа в жизненный цикл приложения. После создания класса наследника App, происходит вызов метода. Run(), запускающего цикл обработки сообщений приложения и делающего видимой указанную активность приложения. Затем происходит вызов метода. Build() инициализирующего приложение, он вызывается только один раз. Если этот метод возвращает виджет, он будет использоваться как корень дерева виджетов и будет отображён на экране. В нашем случае он возвращает класс main унаследованный от класса BoxLayout. [6]

classmainApp(App):

defbuild(self):

return Main()

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

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

BoxLayout - класс являющийся компоновщиком виджетов. Другими словами, методы этого класса отвечают за расположение виджетов относительно друг друга на экране устройства, для расположения виджетов друг над другом используется метод vertical, и horizontal для расположения радом друг с другом.

self.orientation = 'vertical'

self.orientation = 'Horizontal'

Важным аспектом любого приложения является обработка взаимодействий пользователя с приложением. Эту функцию выполняет класс Button, или кнопка. При нажатии на кнопку выполняется действие, ассоциированное с этой кнопкой. Для создания кнопки создаётся объект класса Button.

Методы класса Button On_press() и On_release() выполняют функции, описанные в теле этих методов.

Вызов функции перехода на другой виджет по нажатию:

self.menu.creat.bind(on_press=self.clickedCreat)

Функции QR кодирования реализованы в библиотеке QRcode, которую мы импортировали. Сначала добавляется информация для кодирования методом add_data(text) затем происходит вызов метода Qr. make(fit=True) который кодирует информацию, после чего создаётся изображение вызовом метода qr. make_image(). [7]

Главной активностью в нашем приложении является окно Scan, в нижней части экрана находится меню выбора основынх виджетов приложения Scan, creat, history, settings, но перед описанием класса необходимо подключить библиотеки, которые понадобятся для разработки.

from kivy.app import App

from kivy.uix.boxlayout import BoxLayout

from kivy.uix.widget import Widget

from kivy.uix.button import Button

from kivy.uix.label import Label


Подобные документы

  • Загальні відомості та системні вимоги до ОС Android. Апаратна складова, багатозадачність, інтерфейс користувача. Ініціалізація клієнта Repo. Завантаження дерева Android. Усунення проблем з мережею. Використання локального дзеркала. Перевірка Git тегів.

    курсовая работа [2,6 M], добавлен 04.10.2013

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

    реферат [4,2 M], добавлен 25.12.2015

  • Разработка клиент-серверного приложения для передачи данных с использованием среды программирования Microsoft Visual Studio 2005. Архитектура клиент/сервер. Сокеты и библиотека WinSock. Разработка системы передачи данных в локальной вычислительной сети.

    курсовая работа [479,1 K], добавлен 23.06.2012

  • Математическая основа построения систем защиты информации в телекоммуникационных системах. Особенности методов криптографии. Принципы, методы и средства реализации защиты данных. Основы ассиметричного и симметричного шифрования-дешифрования информации.

    курсовая работа [46,9 K], добавлен 13.12.2013

  • HTC One X как первый коммуникатор компании HTC с четырехъядерным процессором под управлением операционной системы Android 4.0 c интерфейсом HTC Sense 4.0. Обзор операционной системы Android. Диагностика проблем и ремонт микросхем смартфона HTC One X.

    курсовая работа [1,9 M], добавлен 23.04.2014

  • Выбор и обоснование трассы линии связи Кемерово - Ленинск-Кузнецкий: определение числа каналов, системы передачи и типа кабеля. Конструктивный расчет параметров передачи симметричного кабеля. Расчет опасного влияния ЛЭП, молниезащита магистрали; смета.

    курсовая работа [569,5 K], добавлен 13.11.2013

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

    реферат [1,5 M], добавлен 18.12.2011

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

    дипломная работа [2,3 M], добавлен 19.10.2010

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

    курсовая работа [415,2 K], добавлен 23.09.2013

  • Применение кодирования с исправлением ошибок для восстановления данных, потерянных при их передаче и хранения. Использование кодов Рида-Соломона с недвоичными символами. Деление полиномов как важный момент при кодировании и декодировании кодов компьютера.

    реферат [43,4 K], добавлен 25.02.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.