Державна освітня установа вищої професійної освіти
Петербурзький державний УНІВЕРСИТЕТ ШЛЯХІВ ПОВІДОМЛЕННЯ
Кафедра В«Інформаційні та обчислювальні системиВ»
ПОЯСНЮВАЛЬНА ЗАПИСКА
до курсового проекту
з дисципліни В«Методи програмуванняВ»
на тему: В« Розробка 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);
// ЛІВА НИЖНЯ ПАНЕЛЬ
// Панель ...