Archived
0

для работы с зашифрованным потоком

This commit is contained in:
2018-06-12 16:37:45 +03:00
parent dcef09c1d5
commit f5690ba0bb
2 changed files with 79 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
/*
* DmitriyMX <dimon550@gmail.com>
* 2018-06-11
*/
package mc.core.network.proto_1_12_2;
import lombok.extern.slf4j.Slf4j;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.util.Random;
@Slf4j
public class Crypter {
private static final Crypter instance = new Crypter();
private KeyPair keyPair;
private byte[] verifyToken;
public static KeyPair getKeyPair() {
if (instance.keyPair == null) {
try {
KeyPairGenerator keypairgenerator = KeyPairGenerator.getInstance("RSA");
keypairgenerator.initialize(1024);
instance.keyPair = keypairgenerator.generateKeyPair();
} catch (NoSuchAlgorithmException e) {
log.error("WTF?! Algorithm \"RSA\" not defined?!", e);
}
}
return instance.keyPair;
}
public static byte[] getVerifyToken() {
if (instance.verifyToken == null) {
instance.verifyToken = new byte[4];
Random rand = new Random();
rand.nextBytes(instance.verifyToken);
}
return instance.verifyToken;
}
}

View File

@@ -0,0 +1,36 @@
/*
* DmitriyMX <dimon550@gmail.com>
* 2018-06-11
*/
package mc.core.network.proto_1_12_2.packets;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.Setter;
import mc.core.network.SCPacket;
import mc.core.network.proto_1_12_2.ByteArrayOutputNetStream;
import java.security.PublicKey;
@AllArgsConstructor
@NoArgsConstructor
@Setter
public class EncryptionRequestPacket implements SCPacket {
private String serverId;
private PublicKey publicKey;
private byte[] verifyToken;
@Override
public byte[] toByteArray() {
ByteArrayOutputNetStream netStream = new ByteArrayOutputNetStream();
netStream.writeString(serverId);
byte[] bytes = publicKey.getEncoded();
netStream.writeVarInt(bytes.length);
netStream.writeBytes(bytes);
netStream.writeVarInt(verifyToken.length);
netStream.writeBytes(verifyToken);
return netStream.toByteArray();
}
}