для работы с зашифрованным потоком
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user