Phase 4.1 完成: - BaseService.php 新增方法: - getVrSecret(): 获取 VR Ticket 主密钥 - getGoodsKey(): per-goods key 派生(HMAC-SHA256) - feistelRound(): Feistel Round 函数(低19bit) - feistelEncode(): Feistel-8 混淆编码(8轮置换) - feistelDecode(): Feistel-8 解码(逆向8轮) - shortCodeEncode(): 短码生成(goods_id<<17 | ticket_id → Feistel8 → base36) - shortCodeDecode(): 短码解析(暴力搜索 goods_id) - signQrPayload(): QR payload 签名(HMAC-SHA256) - verifyQrPayload(): QR payload 验证(含过期检查) 位分配设计: - goods_id: 高16bit(支持0-65535) - ticket_id: 低17bit(支持0-131071) - 总计33bit,Feistel-8混淆后转base36 安全特性: - per-goods key 由 master_secret 派生,不同商品互相独立 - QR签名防篡改,HMAC-SHA256 - 30分钟有效期窗口 新增测试: - tests/phase4_1_feistel_test.php |
||
|---|---|---|
| .. | ||
| AuditService.php | ||
| BaseService.php | ||
| SeatSkuService.php | ||
| TicketService.php | ||