设计变更: - 旧方案:位打包 (goods_id<<17|ticket_id),需要暴力搜索 goods_id - 新方案:goods_id(4位base36) + ticket_id(5位base36) → Feistel8 → 短码 新设计优势: - 解码 O(1):直接取前4位=goods_id,后5位=ticket_id - 无需暴力搜索,只需验证 hint 匹配 - goods_id 范围扩大:0-1,679,615(4位base36) - ticket_id 范围扩大:0-1,073,741,823(5位base36) - 安全性不变:Feistel8 混淆仍保护 ticket_id 技术实现: - shortCodeEncode: base36 固定4位/5位 padding → intval → Feistel8 - shortCodeDecode: 有 hint 直接验证,无 hint 暴力搜索 - 校验边界:goods_id ≤ 0xFFFFFF, ticket_id ≤ 0x3FFFFFFF |
||
|---|---|---|
| .. | ||
| admin | ||
| api | ||
| index | ||
| install | ||
| lang | ||
| module | ||
| plugins | ||
| route | ||
| service | ||
| tpl | ||
| AppService.php | ||
| BaseController.php | ||
| ExceptionHandle.php | ||
| Request.php | ||
| common.php | ||
| event.php | ||
| middleware.php | ||
| provider.php | ||
| service.php | ||