RSS    

   Курсовая работа: Разработка Java-апплета и подписывание архивного JAR-файла электронной цифровой подписью

Курсовая работа: Разработка Java-апплета и подписывание архивного JAR-файла электронной цифровой подписью

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

ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ

Кафедра «Информационные и вычислительные системы»

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовому проекту

по дисциплине «Методы программирования»

на тему: «Разработка Java-апплета и подписывание архивного JAR-файла электронной цифровой подписью»

Выполнил:

студент группы КИБ-708

Таранин В.В.

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

к.т.н., доц. Кожомбердиева Г.И.

Санкт-Петербург 2009


Задание

по курсовому проекту

по дисциплине «Методы программирования»

на тему: «Разработка Java-апплета и подписывание архивного JAR-файла электронной цифровой подписью»

·  В качестве исходных данных к курсовому проекту используется апплет, являющийся результатом выполнения лабораторной работы №4 «Разработка апплета с эффектом анимации на основе многопоточности Java».

Вариант задания №20

·  Необходимо расширить функциональность апплета с эффектом анимации, реализовав обращение к локальной файловой системе.

·  Создать архивный JAR-файл, содержащий апплет.

·  Подписать JAR-файл электронной цифровой подписью (ЭЦП) и задать политику безопасности для подписанного апплета, включив в файл политики соответствующую запись, разрешающую доступ к локальной файловой системе и выполнение операций чтения-записи.

При выполнении курсового проекта использовать утилиты jar, keytool и jarsigner, а также комплект JDK 1.4.x с модулем plug-in для браузера MS IE 5,(6),(7).


Аннотация

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

Архивный JAR-файл, содержащий апплет, подписывается электронной цифровой подписью. Для апплета задается политика безопасности, путём создания пользовательского файла политики безопасности, который позволяет апплету получить доступ к локальной файловой системе и обеспечивающий возможность работы апплета за пределами модели безопасности Sandbox – «Песочница».

Подписанный электронной цифровой подписью апплет выполняется в среде MS IE с модулем plug-in из JDK 1.4.x.

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


Содержание

Введение

1.  Апплет с эффектом анимации на основе многопоточности Java и обращением к локальной файловой системе

2.  Создание подписанного апплета

2.1 Создание архивного JAR-файла

2.2 Создание пары ключей и сертификата в хранилище ключей

2.3 Подписывание JAR-файла цифровой подписью

2.4 Задание политики безопасности для подписанного апплета

3. Выполнение подписанного апплета

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


Введение

Платформа Java 2 располагает мощной встроенной системой безопасности, включающая API-интерфейсы и механизмы, которые используются для обеспечения безопасности апплетов и приложений Java. Среди особенностей языка программирования Java, которые обеспечивают надежность и безопасность можно выделить: архитектурную независимость, интерпретируемость, переносимость, отсутствие указателей, строгую типизацию, эффективный механизм обработки исключений. Важными неотъемлимыми компонентами системы безопасности Java 2 являются Java Cryptography Architecture (JCA) – архитектура шифрования Java, а также Java Cryptography Extension (JCE) – криптографическое расширение Java.

Целью данного курсового проекта является – подписание архивного JAR-файла, содержащего апплет, электронной цифровой подписью, а также задание политики безопасности для подписанного апплета; ознакомление студентов с криптографическими методоми защиты информации и возможностями, которые предоставляет Java разработчиками программного обеспечения. Для этого необходимо: создать архивный JAR-файл, пары ключей и сертификата в хранилище ключей, далее подписать JAR-файл цифровой подписью и задать политику безопасности для подписанного апплета.

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


1.  Апплет с эффектом анимации на основе многопоточности Java и

обращением к локальной файловой системе

апплет архивный электронный цифровой подпись

import java.applet.Applet;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.util.Calendar;

// Класс апплета, реализующий интерфейсы блоков прослушивания событий

public class Lab4 extends Applet implements ActionListener,ItemListener,Runnable

{

Panel p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,cards,pfield,pb,pread;

Label lb1,lb2,lb3;

CheckboxGroup cbg;

Checkbox cb1,cb2,cb3,cb4;

List list;

Canvas cv;

Button b1,b2,b3,b4,start,stop,read;

CardLayout cardLO;

Scrollbar sb1,sb2,sb3,sb4;

Color col;

int posX,strWidth;

FontMetrics fm;

int rectX=0,rectY=0,posFlag=0,movFlag=0,ovalX=0,ovalY=0;

int animFlag=0;

int rColor,gColor,bColor;

// Флаг остановки анимации

boolean stopFlag;

// Поток выполняющий анимацию

Thread t = null;

//Текстовая область для вывода содержимого файла журнала

TextArea fileText;

// Имя файла-журнала для записи информации о работе апплета

String fileName = "";

// Разделитель строк (признак конца строки)

String ls;

// Буферизированный символьный поток записи в файл

BufferedWriter out;

public void init()

{

setLayout(new GridLayout(2,2));

setForeground(Color.black);

col = Color.black;

// ЛЕВАЯ ВЕРХНЯЯ ПАНЕЛЬ

p1 = new Panel(new BorderLayout());

p1.setBackground(Color.lightGray);

p2= new Panel();

lb1 = new Label("Активная панель: ",lb1.CENTER);

p2.add(lb1);

p1.add(p2,BorderLayout.NORTH);

// Панель радиокнопок внутри ЛЕВОЙ ВЕРХНЕЙ панели

p3 = new Panel(new GridLayout(2,2));

cbg = new CheckboxGroup();

cb1= new Checkbox("Все панели",cbg,true);

cb2= new Checkbox("1-я панель",cbg,false);

cb3= new Checkbox("2-я панель",cbg,false);

cb4= new Checkbox("3-я панель",cbg,false);

cb1.addItemListener(this);

cb2.addItemListener(this);

cb3.addItemListener(this);

cb4.addItemListener(this);

p3.add(cb1);

p3.add(cb2);

p3.add(cb3);

p3.add(cb4);

p1.add(p3,BorderLayout.CENTER);

add(p1);

// ВЕРХНЯЯ ПРАВАЯ ПАНЕЛЬ

p4 = new Panel(new GridLayout(1,1));

list = new List(9,false);

list.add("Чёрный");

list.add("Синий");

list.add("Красный");

list.add("Зелёный");

list.add("Жёлтый");

list.add("Оранжевый");

list.add("Розовый");

list.add("Фиолетовый");

list.add("Тёмно-серый");

list.addItemListener(this);

p4.add(list);

add(p4);

// ЛЕВАЯ НИЖНЯЯ ПАНЕЛЬ

// Панель с кнопками

p5 = new Panel(new GridLayout(2,2));

b1 = new Button("Квадрат");

b2 = new Button("Круг");

b3 = new Button("Треугольник");

b4 = new Button("Строка");

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

b4.addActionListener(this);

p5.add(b1);

p7.add(b2);

p5.add(b3);

p5.add(b4);

pb = new Panel(new GridLayout(1,2,5,0));

lb2 = new Label("Управление потоками",lb1.CENTER);

start = new Button("Запуск"); start.addActionListener(this);

stop = new Button("Остановка");stop.addActionListener(this);

pb.add(start);

pb.add(stop);

// !!! ПАНЕЛЬ ДЛЯ ЧТЕНИЯ ФАЙЛА-ЖУРНАЛА !!!

pfield = new Panel(new BorderLayout());

pread = new Panel(new GridLayout(3,1));

read = new Button("Чтение файла-журнала");

read.addActionListener(this);

// Текстовая область для вывода информации из файла журнала

fileText = new TextArea();

// Название файла-журнала задаётся параметром в HTML-файле

// или если такого нет – создаётся по умолчанию

fileName = getParameter("FileName");

if (fileName == null)

fileName = "log.txt";

ls = System.getProperty("line.separator"); // разделитель строк

fileText.setBackground(Color.white);

pread.add(lb2);

pread.add(pb);

pread.add(read);

pfield.add(p5,BorderLayout.NORTH);

pfield.add(pread,BorderLayout.CENTER);

pfield.add(fileText,BorderLayout.SOUTH);

add(pfield);

// ПРАВАЯ НИЖНЯЯ ПАНЕЛЬ

// ПАНЕЛЬ С КАРТАМИ (ГЛАВНАЯ)

cardLO = new CardLayout();

cards = new Panel();

cards.setLayout(cardLO);

cards.setBackground(Color.white);

Страницы: 1, 2, 3


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.