登录链路同时有两个矛盾需求:密钥要安全交换(RSA 擅长,但慢),数据要高频加密(AES 擅长,但密钥难分发)。混合加密是标准答案:RSA 只传 AES 密钥,AES 负责后续全部数据加密。适用于登录握手、充值通道、跨服通信三类高价值链路。
-- 客户端:生成一次性 AES 密钥,用服务器公钥加密后发送
local aesKey = randomHex(32)
local encrypted = rsaEncrypt(serverPublicKey, aesKey)
send({ cmd = "KEY_EXCHANGE", data = encrypted })
-- 服务器:私钥解出 aesKey,之后双方用 aesKey 做对称加密
session.aesKey = rsaDecrypt(serverPrivateKey, msg.data)
RSA 密钥对由服务器生成,公钥随登录页下发,私钥永不离开服务器。一次 2048 位 RSA 加解密约 2~5ms,登录只做一次,开销可忽略;握手后的每条消息用 AES-128-CBC 加密,单条加解密耗时微秒级。
会话密钥轮换:握手密钥只在登录会话内有效,每 30 分钟轮换一次(轮换流程参考会话密钥专篇)。防重放:握手请求带时间戳与客户端 nonce,服务器记录 nonce 拒绝重放,防止攻击者录下握手包反复建立会话。私钥保护:服务器私钥文件权限 600,进程重启需人工解锁,杜绝私钥随代码仓库泄漏的可能。
996 单服登录链路实测:RSA 2048 握手增加 4.1ms,AES 后续消息加解密单条 0.02ms,玩家无感。边界说明:RSA 只用于"传密钥"与"传签名",不要用它加密大段数据(单块上限 245 字节且性能差);AES 用 CBC 或 GCM 模式,ECB 模式禁用(相同明文块输出相同密文,模式特征会被识别)。混合加密实施后,配合防重放与包体签名,登录与充值两条链路的安全基线即达到商业服标准。
实施清单五项:生成并部署 RSA 密钥对、客户端内置公钥、握手接口上线、AES 会话加密接入、nonce 表与时间窗校验开启。每项单独验收后再进入下一项,出现联调问题时按清单回退到上一项定位,比整体排查快得多。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 行会福利只有加成和宝库,缺少可成长的实体。行会技能塔给行会一座可以逐层点亮的塔:全行会捐献建材升级塔层,…
实战应用:用在哪里 新手玩家的第一次长途旅行总在比奇到沃玛的路上迷路或被怪打死。新手护送教学线把这段路变成有老玩家护航的成人…
实战应用:用在哪里 行会招新全靠世界频道刷屏,招募信息水贴一样沉底。行会招募接口给招新一个正式渠道:行会发布结构化招募信息(…
实战应用:用在哪里 拍卖行商品上万件,翻页找裁决之杖像大海捞针。商城搜索给拍卖行装上联想与筛选:输入前两个字即时联想候选关键…
实战应用:用在哪里 桃源之门是传奇最有韵味的隐藏地图:条件不明、入口隐秘,找到即是传说。隐藏地图的触发设计要把开启条件做成可…
实战应用:用在哪里 行会年度战报打包后仍有五百 KB,分包下发到第九包时玩家掉线,前功尽弃重来。分包进阶方案叠加断点续传与压…