尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

NPPA 防沉迷接口对接实录(C#)

NPPA 防沉迷接口对接实录(C#) 最近做手游接入国家新闻出版署的防沉迷系统,踩了不少坑。网上能找到的资料大多是 Java 或 PHP 的,C# 版本几乎没有,所以整理一份出来。先搞清楚接口是怎么跑起来的NPPA 这套接口的核心逻辑其实不复杂,绕人的地方在于加密和签名。整个链路是这样的:玩家在游戏里填了姓名和身份证,我们不能明文发出去。NPPA 规定必须用AES/GCM/NoPadding把这些敏感数据加密,加密后的密文放进请求体的data字段。光加密还不够,NPPA 怕别人伪造请求,所以要求每个请求都带一个签名。签名的算法是HMAC-SHA256,把请求头里的几个参数(appId、bizId、时间戳)加上加密后的业务数据,按 ASCII 顺序排好序拼成一个长字符串,再用平台给你的密钥算个哈希,放到请求头的sign字段里。服务端收到请求后,会用同样的规则重新算一遍签名,对得上才继续处理,对不上直接拒绝。这就是防篡改的原理。认证通过后,NPPA 会返回一个pi(用户唯一标识)。之后玩家每次上线下线,你都得拿着这个pi调用行为上报接口,告诉监管平台"这个人几点上线、几点下线"。这块是实时的,别偷懒不报,会被查。搞明白这三步——加密、签名、上报,剩下就是把代码敲出来。加密这块最容易出错先说加密,因为这是最多人卡住的地方。GCM
返回列表