0
거대한, 거대한 문제가 있습니다. 패킷에 AES 직렬화를 사용하고 있으며 여기에 문제가 있습니다. Kryo에서Kryonet - 직렬화 중에 보낸 사람 (연결)을 얻는 방법?
직렬 변환기는 다음과 같다 :
public class AESSerializer extends Serializer {
private final Serializer serializer;
public AESSerializer (Serializer serializer) {
this.serializer = serializer;
}
public void write (Kryo kryo, Output output, Object object) {
// USE AES KEY TO ENCRYPT
// WRITE OBJECT
}
public Object read (Kryo kryo, Input input, Class type) {
// USE AES KEY TO DECRYPT
// READ OBJECT
}
}
문제는 각 사용자가 SecretAESKey 자신의 가지고 있어야하는 것이 여기에있다. 나는 serializer에서 연결 목록에 도달 할 수있는 방법을 찾을 수 없으며 Kryonet의 코드를 읽을 때 - 아무데도 전달하지 않습니다. AES 키를 얻기 위해 객체를 작성하는 Connection을 가져와야합니다.
serializer 생성자가 옵션이 아닙니다. 이유는 serializer가 응용 프로그램마다 하나씩 있기 때문이며 각 사용자마다 하나가 아닙니다.
여러분은 그런 것들을 어떻게 처리 할 생각이 있습니까? 당신의 시리얼 통화에서
public synchronized void write (Connection connection, ByteBuffer buffer, Object object) {
output.setBuffer(buffer);
kryo.getContext().put("connection", connection);
kryo.writeClassAndObject(output, object);
output.flush();
}
public synchronized Object read (Connection connection, ByteBuffer buffer) {
input.setBuffer(buffer);
kryo.getContext().put("connection", connection);
return kryo.readClassAndObject(input);
}
을 :