未登录用户
首 页
书 架
登录系统
注册账号
联系我们
duidaima.com
版权声明
闽ICP备2020021581号
闽公网安备 35020302035485号
搜索
我要提问
随便写写
我要写书
各位大佬们,你们的系统兑换码都是怎么设计的?
发布于 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
]
回复
人生如流水
设计比较简单,活动标识 3 位-渠道标识 3 位-10 位随机字符串 存数据库
2025/9/1 9:11: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
]
回复
路生云烟
记得前前同事用 uuid.md5.hashCode/100000 结果上线三个月后重复了
2025/9/1 9:00:00
[
0
]
[
0
]
回复
不败的意志
第二种假设秘钥漏了你不炸了
2025/9/1 8:58:00
[
0
]
[
0
]
回复
凉生不朽
批量生成存数据库
2025/9/1 8:51:00
[
0
]
[
0
]
回复
点击加载更多评论
吐槽.灌水
443 成员 |
1650 话题
+我要提问
+随便写写
可能感兴趣的话题
对于Edge的用户,有哪个瞬间会让你有换回Chrome的冲动?
作为后端程序员在 cursor 加持下写前端,最适合的前端框架是哪个?
JetBrains的独立git客户端Git Client停止开发了
你们公司的代码都是要授权的IDE才能打开吗?
10000 以内的直接创建, 创建的时候唯一索引,太多开个队列创建就好了,加个批量创建批次码很管用,经常让查🥲
兑换的时候加个乐观锁
把兑换码印刷之后,就可以把 salt1 记在小本本上,然后把 B 从数据库中删掉。
简单的校验可以是限定随机数 A 具有某些性质,比如某两位和必须为固定值。
你的程序内置对应的公钥
程序安装后根据设备信息生成一个唯一编码
用户拿着唯一编码找你,你用私钥对唯一编码签名,拿到一个签名字符串(兑换码)
用户在程序中输入这个兑换码,程序通过内置的公钥验证签名确定这个兑换码有效
为了区分不同等级的兑换码,你可以拥有多个不同级别的私钥,在你的程序中内置多个不同的公钥。程序通过判断签名是哪个私钥的签名来确定这个兑换码的级别。