ir (). getPublic (). getEncoded ()),
roomName, CMD_PRV_ACCEPT);
}
}
}
Для того, щоб клієнти знали про існування один одного, в кожному з них при запуску програми починається здійсняться спеціальна нитка, у якій з певною періодичністю надсилається широкомовний пакет певного формату, який і свідчить про наявність клієнта в мережі . За запуск цієї нитки відповідає метод runBroadcasting (), описаний нижче:
/**
* Даний метод запускає процес передачі "маячкових"
* пакетів з певною періодичністю.
* @ param period частота передачі "Маякова" пакетів.
*/run Broadcasting (long period) {timer = new Timer (true); task = new TimerTask () {
@ Overridevoid run () {
// широкомовно передається команда PRSN (null, null, CMD_PRESENT);
}
};. schedule (task, 1000, period);
Для реалізації захищених користувача каналів методом асинхронного шифрування RSA, використовуються три методи: encode (), decode () і initKeys (), визначені у класах RSACipher і NetRoom.
Метод encode () шифрує надані йому дані на основі переданого відкритого ключа. Опис методу представлено нижче:
/**
* Метод шифрує передані дані на основі відкритого ключа.
* @ param data дані для шифрування.
* @ param publicKey відкритий ключ.
* @ return зашифроване повідомлення.
*/static String encode (String data, PublicKey publicKey) {res = null; {
// Створюється примірник кодувальника на підставі алгоритму RSA.enc = Cipher.getInstance (ALGORITHM);
// Ініціалізація кодувальника відкритим ключем .. init (Cipher.ENCRYPT_MODE, publicKey);
// Шифровка повідомлення за один прохід.
res = new String (enc.doFinal (data.getBytes ()));
} catch (NoSuchAlgorithmException e) {. printStackTrace ();
} catch (NoSuchPaddingException e) {. printStackTrace ();
} catch (InvalidKeyException e) {. printStackTrace ();
} catch (IllegalBlockSizeException e) {. printStackTrace ();
} catch (BadPaddingException e) {. printStackTrace ();
} res;
}
.6.2 Метод decode () розшифрує надані йому дані на основі збереженого закритого ключа. Опис методу представлено нижче:
/**
* Метод расщіфрует Пердана дані на основі закрився ключа.
* @ param data дані для розш...