• 各位大佬们,你们的系统兑换码都是怎么设计的?
  • 发布于 1个月前
  • 577 热度
    10 评论
  • 亦東風
  • 0 粉丝 53 篇博客
  •   
咨询独立开发的大佬一个问题, 大佬们的兑换码都是怎么处理的?是批量生成存到数据库吗?还是不存库直接用密钥解析?
用户评论
  • 徒步旅行
  • 只存数据库,不用搞什么校验位,兑换码这种功能请求量太少了,给上个索引,你数据库 CPU 都上不了 1%,
    10000 以内的直接创建, 创建的时候唯一索引,太多开个队列创建就好了,加个批量创建批次码很管用,经常让查🥲
    兑换的时候加个乐观锁
  • 2025/9/1 9:15:00 [ 0 ] [ 0 ] 回复
  • 星空寂云
  • 之前用 cursor 写过,提供的方案是后端数据库一个兑换码表,批量生成唯一值,哪个用户兑了就标记已兑状态,实现不难。
  • 2025/9/1 9:13:00 [ 0 ] [ 0 ] 回复
  • 一览众山小
  • 比如这个兑换码有 32 字节,前面 16 字节是随机数 A ,后面 16 字节 B=hash(A+C+salt1),服务器存随机数 A, 随机数 C, 验证哈希 D=hash(B+salt2)
    把兑换码印刷之后,就可以把 salt1 记在小本本上,然后把 B 从数据库中删掉。
    简单的校验可以是限定随机数 A 具有某些性质,比如某两位和必须为固定值。
  • 2025/9/1 9:09:00 [ 0 ] [ 0 ] 回复
  • 青春不留白
  • 你有一个私钥
    你的程序内置对应的公钥
    程序安装后根据设备信息生成一个唯一编码
    用户拿着唯一编码找你,你用私钥对唯一编码签名,拿到一个签名字符串(兑换码)
    用户在程序中输入这个兑换码,程序通过内置的公钥验证签名确定这个兑换码有效

    为了区分不同等级的兑换码,你可以拥有多个不同级别的私钥,在你的程序中内置多个不同的公钥。程序通过判断签名是哪个私钥的签名来确定这个兑换码的级别。
  • 2025/9/1 9:08:00 [ 0 ] [ 0 ] 回复
  • 风尘客
  • 存到数据库更稳妥,一则如楼上所说更安全,二则可以方便地控制兑换码,比如停用某个兑换码。你用 key 解析的话,后续想加限制就得改代码
  • 2025/9/1 9:06:00 [ 0 ] [ 0 ] 回复
  • 夜有星光
  • 批量生成兑换码,保存到数据库,同时兑换码本身带有部分校验逻辑(如校验位、活动标识)。核销时既能快速查表,又能做基础校验,避免误输和伪造。
  • 2025/9/1 9:03:00 [ 0 ] [ 0 ] 回复