最近我看到Google AdWords正在分享促销代码,这样你就可以获得200美元的发布费用。
问题是:很明显,代码是一大堆字符的组合,比如:9842 - a251 - b51s - 1250,如果你尝试任何其他的输入,但是他们给出的是什么,它就会失败,告诉你代码无效。这当然很好,因为你不想让任何“机器人”为你生成代码。
那么,做这样的事情的最佳实践是什么?我一直在思考和使用大量的字符,并在随机序列中生成它们,这是可以做到的,但我认为一些“概率”模型更适合。
你知道怎样做才是正确的吗?
谢谢大家!
发布于 2011-10-12 07:33:03
最安全的方法是使用加密PRNG生成足够长的随机码(理想情况下至少128位),并将有效in列表存储在数据库中。当有人输入代码时,对照数据库检查它,并将其标记为已使用。
发布于 2011-10-11 19:58:13
最简单的方法是:
string alpha = "0123456789abcdefghijklmnopqrstuvwxyz";
字母表中的int final = 16; string code="";
。
int i = final;
while( i-->0 ){
string += alpha[ Math.random(0,alpha.length) ]
}发布于 2011-10-11 21:39:20
获取连接到固定字符串的auto-inc数字的散列:
“我的无意义的长字符串0000001”
“我的无意义的长字符串0000002”
哈希擅长从几乎相同的字符串中生成差别很大的代码。如果你有副本,就把它扔掉。
https://stackoverflow.com/questions/7725383
复制相似问题