
- •1. Характеристика бази практики
- •2. 2. Мета переддипломної практики.
- •3. Індивідуальне завдання
- •4. Зміст та результати виконаних робіт.
- •4.1. Календарний план-графік науково-дослідної практики
- •4.2. Результати виконання індивідуального завдання.
- •4.2.1. Опис алгоритму шифрування rsa.
- •4.2.2. Алгоритм створення відкритого і секретного ключів
- •4.2.3. Код програми
- •4.2.4. Результати роботи програми:
- •5. Висновки
4.2.3. Код програми
import java.math.BigInteger;
import java.util.Random;
import java.util.Scanner;
public class RSA {
private BigInteger p;
private BigInteger q;
private BigInteger N;
private BigInteger phi;
private BigInteger e;
private BigInteger d;
private int bitLength = 1024;
private Random random;
public RSA() {
init();
}
private void init() {
random = new Random();
p = BigInteger.probablePrime(bitLength, random);
q = BigInteger.probablePrime(bitLength, random);
N = p.multiply(q);
phi = p.subtract(BigInteger.ONE).multiply(q.subtract(BigInteger.ONE));
e = BigInteger.probablePrime(bitLength/2, random);
while (phi.gcd(e).compareTo(BigInteger.ONE) > 0 && e.compareTo(phi)<0) {
e.add(BigInteger.ONE);
}
d = e.modInverse(phi);
}
public RSA(BigInteger publicKey, BigInteger privateKey, BigInteger N) {
this.e = publicKey;
this.d = privateKey;
this.N = N;
}
public byte[] encrypt(byte[] message) {
return new BigInteger(message).modPow(e, N).toByteArray();
}
public byte[] decrypt(byte[] message) {
return new BigInteger(message).modPow(d, N).toByteArray();
}
public static String bytesToString(byte[] buffer) {
StringBuilder sb = new StringBuilder("");
for(byte b: buffer) {
sb.append(Byte.toString(b));
}
return sb.toString();
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Input word for encryption via RSA");
String word = sc.next();
RSA rsa = new RSA();
byte[] encryptedWord = rsa.encrypt(word.getBytes());
System.out.println("\n encrypted in bytes\n" + bytesToString(encryptedWord) + "\n");
byte[] decryptedWord = rsa.decrypt(encryptedWord);
System.out.println("decrypted in bytes\n" + bytesToString(decryptedWord) + "\n");
System.out.println("decrypted word:\n" + new String(decryptedWord));
}
}
4.2.4. Результати роботи програми:
5. Висновки
Під час науково-дослідної практики була програма , яка шифрувала важливі дані співробітників ТОВ "Торгова група"Промтехсервіс".
Передача інформації в середині компанії та за її межі була захищеною.
За допомогою асинхронного алгоритму шифрування, будь хто міг передати інформацію в зашифрованому вигляді, а з іншої сторони прийняти і розшифрувати. Шифратор досить вагомо спрощував життя при відправленні дуже важливих даних.
Список використаної літератури.
1. Герасименко В.А. Защита информации в автоматизированных
системах обработки данных кн. 1.-М.: Энергоатомиздат. -1994.-400с.
2. Вербицкий О.В.Вступление к криптологии.- Львов.: Издательство
науково-техничной литературы.-1998.-300с.
3. Диффи У. Первые десять лет криптографии с открытым ключом
//ТИИЭР, т. 76(1988)б Т5б с. 54-74.
4. Герасименко В.А., Скворцов А.А., Харитонов И.Е. Новые
направления применения криптографических методов защиты информации.- М.:
Радио и связь.-1989.-360с.
5. Миллер В. Использования эллиптических кривых в криптографии
.: -1986.-417-426с.
6. Галатенко В.А. Информационная безопасность. –М.: Финансы и
статистика, 1997. –158 с.
7. Грегори С. Смит. Программы шифрования данных // Мир ПК –1997.
-№3. -С.58 - 68.
8. Ростовцев А. Г., Михайлова Н. В. Методы криптоанализа
классических шифров. –М.: Наука, 1995. –208 с.
9. Терехов А. Н., Тискин А. В. // Программирование РАН. –1994.
-N 5 -С. 17—22.
10. Криптология – наука о тайнописи // Компьютерное обозрение. –1999. -
№3. –С. 10 – 17.
11. Баричев С. В. Криптография без секретов. –М.: Наука, 1998. –120 с.