我正在写一个小系统,允许我在演唱会上出售乐队的音乐,通过制作代金券,可以在我们的网站上赎回MP3s。
凭证将需要用户输入的代码。代码需要具备以下特性:
如果我使用GUID,我关心的是第1点。如果我使用一个递增的整数,我关心的是第2点。中间必须有一些快乐的介质,对吗?我想,也许这项工作已经完成,有一个理想的解决方案等待着我。如果没有,我想我将使用一个随机的字母数字字符串,或者可能只使用字母(为了清晰起见,不包括I和O),并让应用程序块IP地址失败X次,这意味着可能的暴力攻击。如果我这样做,一个字符串的长度和X的值会起作用,为什么?
谢谢你的帮忙!
更新:我没有完全明确的方法:我将生成列表的凭单代码打印,然后输入“出售”代码后的演出。因此,我认为像校验和这样的元素是不必要的,就像它们在不使用验证服务器的软件密钥中一样。
发布于 2009-12-18 04:06:36
只有8个字母数字字母(I和O除外)有1785793904896种可能的组合。这是所有的意图和目的都无法猜测的,只要你没有50亿的凭单。
发布于 2009-12-18 04:06:18
你可以用一个经过英语音节训练的马尔可夫链来创建一个由可读的胡言乱语组成的句子。在打印有效凭证时,只需将生成的句子添加到数据库中(当然,当它们被赎回时使其无效)。
发布于 2009-12-18 04:08:19
AOL过去对他们发送的CD使用随机组合的两个单词。你可以采取同样的方法,只需增加字数就可以得到你所需要的机会。
https://stackoverflow.com/questions/1926206
复制相似问题