для работы с зашифрованным потоком
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