@@ -2,6 +2,8 @@ package org.orinprojects.client;
|
||||
|
||||
import org.orinprojects.encryption.EncryptionUtil;
|
||||
import org.orinprojects.exceptions.ArgumentsException;
|
||||
import org.orinprojects.protocol.Message;
|
||||
import org.orinprojects.protocol.MessageType;
|
||||
|
||||
import javax.crypto.SecretKey;
|
||||
import java.net.Socket;
|
||||
@@ -38,11 +40,11 @@ public class Client {
|
||||
Thread thr = new Thread(client);
|
||||
thr.start();
|
||||
|
||||
client.out.println("WLC" + username);
|
||||
client.out.flush();
|
||||
Message welcomeMessage = new Message(MessageType.WLC, username);
|
||||
welcomeMessage.send(client.out);
|
||||
|
||||
client.out.println("RSA" + EncryptionUtil.publicKeyToString(keys.getPublic()));
|
||||
client.out.flush();
|
||||
Message rsaMessage = new Message(MessageType.RSA, EncryptionUtil.publicKeyToString(keys.getPublic()));
|
||||
rsaMessage.send(client.out);
|
||||
|
||||
while (socket.isConnected()) {
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
@@ -53,8 +55,9 @@ public class Client {
|
||||
|
||||
if (client.rsaReceived && client.aesReceived) {
|
||||
String encryptedText = EncryptionUtil.encryptWithAES(inputText, aesKey, ivKey);
|
||||
client.out.println("TXT" + encryptedText);
|
||||
client.out.flush();
|
||||
|
||||
Message encryptedMessage = new Message(MessageType.TXT, encryptedText);
|
||||
encryptedMessage.send(client.out);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package org.orinprojects.client;
|
||||
|
||||
import org.orinprojects.encryption.EncryptionUtil;
|
||||
import org.orinprojects.protocol.Message;
|
||||
import org.orinprojects.protocol.MessageType;
|
||||
|
||||
import javax.crypto.BadPaddingException;
|
||||
import javax.crypto.IllegalBlockSizeException;
|
||||
@@ -37,28 +39,26 @@ public class ClientThread implements Runnable {
|
||||
public void run() {
|
||||
while (clientSocket.isConnected()) {
|
||||
try {
|
||||
String receivedMessage = in.readLine();
|
||||
String prefix = receivedMessage.substring(0, 3);
|
||||
String restMessage = receivedMessage.substring(3);
|
||||
Message message = new Message(in.readLine());
|
||||
|
||||
if (prefix.equals("RSA") && !rsaReceived) {
|
||||
Client.serverPublicRSA = EncryptionUtil.stringToPublicKey(restMessage);
|
||||
if (message.isOfType(MessageType.RSA) && !rsaReceived) {
|
||||
Client.serverPublicRSA = EncryptionUtil.stringToPublicKey(message.getData());
|
||||
rsaReceived = true;
|
||||
}
|
||||
|
||||
if (prefix.equals("AES") && !aesReceived) {
|
||||
String decryptedAES = EncryptionUtil.decryptWithRSA(restMessage, Client.keys.getPrivate());
|
||||
if (message.isOfType(MessageType.AES) && !aesReceived) {
|
||||
String decryptedAES = EncryptionUtil.decryptWithRSA(message.getData(), Client.keys.getPrivate());
|
||||
Client.aesKey = EncryptionUtil.aesKeyFromString(decryptedAES);
|
||||
aesReceived = true;
|
||||
}
|
||||
|
||||
if (prefix.equals("IVK")) {
|
||||
String decryptedIVKey = EncryptionUtil.decryptWithRSA(restMessage, Client.keys.getPrivate());
|
||||
if (message.isOfType(MessageType.IVK)) {
|
||||
String decryptedIVKey = EncryptionUtil.decryptWithRSA(message.getData(), Client.keys.getPrivate());
|
||||
Client.ivKey = EncryptionUtil.ivKeyFromString(decryptedIVKey);
|
||||
}
|
||||
|
||||
if (prefix.equals("TXT") && aesReceived && rsaReceived) {
|
||||
String decryptedMessage = EncryptionUtil.decryptWithAES(restMessage, Client.aesKey, Client.ivKey);
|
||||
if (message.isOfType(MessageType.TXT) && aesReceived && rsaReceived) {
|
||||
String decryptedMessage = EncryptionUtil.decryptWithAES(message.getData(), Client.aesKey, Client.ivKey);
|
||||
System.out.println(decryptedMessage);
|
||||
}
|
||||
} catch (NoSuchPaddingException | IllegalBlockSizeException | IOException | NoSuchAlgorithmException |
|
||||
|
||||
Reference in New Issue
Block a user