Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Програмна реалізація шифрування байт-коду java

РефератДопомога в написанніДізнатися вартістьмоєї роботи

В цьому методі створюємо екземпляр алгоритму шифрування AES, ініціалізуємо його та зашифровуємо масив байтів, який було передано в метод. Далі в класі CryptoClassLoader створюємо метод private byte loadClassBytes (), який зчитує зашифрований. class файл в масив байтів та розшифровує його. Як видно, програма декомпілюється нормально (Рисунок 4). Збережені назви класів, методів, полей, що дає змогу… Читати ще >

Програмна реалізація шифрування байт-коду java (реферат, курсова, диплом, контрольна)

Реалізація шифрування

Для реалізації шифрування обрано розширення Java Cryptography Extension із бібліотеки java. security та алгоритм шифрування AES.

Створимо клас AES та реалізуємо в ньому такі методи:

Метод для збереження довжини ключа:

private static String safePassword (String unsafe).

Цей метод використовується для збереження корректної довжини ключа для алгоритму шифрування AES в 128 біт. Тобто коли ключ буде коротший за потрібний то до нього додається необхідна кількість біт з цього самого ключа, а коли довший то залишок ключа відрізається.

Метод шифрування:

public static byte[] encrypt (byte[] value, String password).

В цьому методі створюємо екземпляр алгоритму шифрування AES, ініціалізуємо його та зашифровуємо масив байтів, який було передано в метод.

В основному методі main зчитуємо з. class файлу масив байтів, передаємо його в метод encrypt, та записуємо в новий файл масив байтів, який повернув метод шифрування.

Реалізація завантажувача класу

В головному класі CrySec створимо такі методи:

private static String safePassword (String unsafe) — як і в попередньому випадку цей метод для збереження довжини ключа.

public static byte[] decrypt (byte[] value, String password) — оберенений до методу зашифрування, який розшифровує переданий йому масив байтів.

Створимо клас class CryptoClassLoader та унаслідуємо клас extends ClassLoader. В ньому перевизначимо метод findClass (String name), в якому отримуємо масив байтів з вже розшифрованим байт-кодом захищуваної програми та передамо його віртуальній машині методом defineClass (null, classBytes, 0, classBytes. length), де null — імя класу, його вказувати не обов`язково; classBytes — масив байтів з байт-кодом; 0 — початок масиву та classBytes. length — довжина масиву.

Далі в класі CryptoClassLoader створюємо метод private byte[] loadClassBytes (), який зчитує зашифрований. class файл в масив байтів та розшифровує його.

Метод public void runClass (String name) отримує метод main з головного класу захищуваної програми та передає його віртуальній машині Java.

Тестування програмного засобу

В якості тестової захищуваної програми використаємо Main. class, в якості декомпілятора використаємо популярний декомпілятор Java JAD (Java Decompiler).

Спочатку спробуємо декомпілювати Main.class.

Результат декомпілювання Main.class.

Рисунок 4 — Результат декомпілювання Main.class.

Як видно, програма декомпілюється нормально (Рисунок 4). Збережені назви класів, методів, полей, що дає змогу дослідити її.

Тепер зашифруємо Main. class за допомогою програми шифрування AES. Вона не має інтерфейсу, тому просто запускаємо її. Після запуску з`являється файл Main_c.class, вміст якого зашифрований. Якщо спробувати декомпілювати його, то декомпілятор видасть помилку (Рисунок 5), а якщо просто відкрити в текстовому редакторі то побачимо незрозумілі символи (Рисунок 6).

Результат декомпілювання Main_с.class.

Рисунок 5 — Результат декомпілювання Main_с.class.

Вміст файлу Main_c.class.

Рисунок 6 — Вміст файлу Main_c.class.

Тепер запустимо наш завантажувач зашифрованих класів. Він зчитує зашифрований Main_c.class, розшифровує його та передає байт-код віртуальній машині Java. Захищувана програма працює (Рисунок 7).

Прогама Маятник Main.class.

Рисунок 7 — Прогама Маятник Main.class.

Показати весь текст
Заповнити форму поточною роботою