刮刮卡代码

时间:2011-09-20 20:52:08

标签: php random prng

我会尽量简单,明确和直接。我的问题如下:我有一个我需要的项目 为刮刮卡生成代码。刷卡的打印方式与您用来充电的方式相同 移动电话。

系统是人们购买卡片,获取卡片上的代码,然后调用TOIP服务器(Asterisk)并插入代码以访问服务。它有三次尝试输入正确的代码。

我想制作一个PHP程序来生成这些代码,所以我当然需要经过一个PRNG(伪随机数生成器)。我的约束是:

- 正如人们所说的那样,代码不应该太长,而应该足够长以确保安全。

- 当输入的代码进行比较时,我需要系统足够快 和存储在数据库中的那个(用于统计目的)。

所以我的问题是:

- 使用PRNG是对的吗?

- 如果是的话,你知道一个强大到足以产生好的随机数吗?

- 行业使用的标准是什么?

- 如果对数百万个代码进行比较,如何使比较算法足够快?

感谢您的时间和答案。

1 个答案:

答案 0 :(得分:3)

是的,PRNG在稍微调整之后会正常工作。

http://en.wikipedia.org/wiki/Random_password_generator

您可以参考上面链接中的密码生成器代码。你必须确保第一个数字不是0并且只使用不是字母的数字。

生成一个数字后,您必须在插入之前检查它是否存在于DB中。

通常,行业使用16个字符/数字。您还可以生成20位数字,以使整个过程更快。

为了使匹配更快,您必须索引数据库中的字段。最有可能是char(16)或char(20)。

注意:由于这里不需要varchar,因此char是最佳选择。

将Mysql表引擎保留为MYISAM以进行快速比较。