netty服务端加解密
参考链接:https://www.cnblogs.com/silyvin/articles/11827030.html
一、解密
1、自定义解密类
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;
import java.util.List;
//自定义解密
public class CustomDecoder extends ByteToMessageDecoder {
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
byte [] bytes = new byte[in.readableBytes()];
in.readBytes(bytes);
byte [] encoded = Utils.decryp(bytes);; //自定义解密方法
ByteBuf buf = Unpooled.wrappedBuffer(encoded);
out.add(buf);
}
}
2、加入到pipeline中
ChannelPipeline pipeline = ch.pipeline(); pipeline.addLast(new CustomDecoder());//解密操作
二、加密
1、自定义加密类
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
public class HJ212MessageEncoder extends MessageToByteEncoder<HJ212PackBean> {
@Override
protected void encode(ChannelHandlerContext ctx, HJ212PackBean bean, ByteBuf byteBuf) throws Exception {
String response = "";
//自定义拼接回复内容response
byte[] bytes=response.getBytes();
bytes = Utils.encryp(bytes);//自定义加密方法
ctx.writeAndFlush(Unpooled.copiedBuffer(bytes));
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
logger.error("编码异常" + cause.getMessage());
ctx.close();
}
}
2、加入到pipeline
ChannelPipeline pipeline = ch.pipeline(); pipeline.addLast(new HJ212MessageEncoder());
浙公网安备 33010602011771号