package com.cwa.msg.encryption; import com.cwa.gamecore.io.GameInput; import com.cwa.gamecore.message.AbstractRequest; import com.cwa.gamecore.message.GameRequest; import com.cwa.gamecore.util.MessageUtil; /** * 加密的请求消息。 */ public abstract class CipherRequest extends AbstractRequest { private byte[] cipherData; // 加密数据 private GameRequest plainRequest; // 解密后的请求 public CipherRequest(int cmdId) { super(cmdId); } /** * 返回解密之后的请求消息。 */ public GameRequest getPlainRequest() { return plainRequest; } @Override public void decodeBody(GameInput in) { cipherData = in.getBytes(); } /** * 解密消息。 */ public void decrypt() { byte[] plainData = decrypt(cipherData); plainRequest = MessageUtil.decode(plainData); } /** * 解密消息。解密算法由子类确定。 * @param cipherData 消息密文 * @return 消息明文 */ protected abstract byte[] decrypt(byte[] cipherData); }