最近我看到 Google AdWords 正在共享促销代码,这给你 200 美元与他们一起发布。
问题是这样的:显然,代码是字符的大组合,例如:9842 - a251 - b51s - 1250
,如果您尝试任何其他输入,但他们给出的内容将失败,告诉您代码无效。这当然很好,因为您不希望任何“机器人”为您生成代码。
那么,做这样的事情的最佳实践是什么?我一直在考虑并使用大量字符,并以随机序列生成它们是否可以完成,但我认为一些“概率”模型会更合适。
你知道它是如何正确完成的吗?
谢谢你们!
最近我看到 Google AdWords 正在共享促销代码,这给你 200 美元与他们一起发布。
问题是这样的:显然,代码是字符的大组合,例如:9842 - a251 - b51s - 1250
,如果您尝试任何其他输入,但他们给出的内容将失败,告诉您代码无效。这当然很好,因为您不希望任何“机器人”为您生成代码。
那么,做这样的事情的最佳实践是什么?我一直在考虑并使用大量字符,并以随机序列生成它们是否可以完成,但我认为一些“概率”模型会更合适。
你知道它是如何正确完成的吗?
谢谢你们!
最安全的方法是使用加密 PRNG 生成足够长的随机代码(理想情况下至少 128 位),并将有效 ID 列表存储在数据库中。当有人输入代码时,将其与数据库进行检查并将其标记为已使用。
最简单的方法是:
设置一个字母
string alpha = "0123456789abcdefghijklmnopqrstuvwxyz";
设置最终代码的长度
int final = 16; string code="";
从字母表中生成字符
.
int i = final;
while( i-->0 ){
string += alpha[ Math.random(0,alpha.length) ]
}
获取连接到固定字符串的 auto-inc 数字的哈希:
“我的长无意义字符串 0000001”
“我的长无意义字符串 0000002”
哈希擅长从几乎相同的字符串生成大不相同的代码。扔掉重复的,如果你有的话。