1

我会尽量简单、清晰和直接。我的问题如下:我有一个项目需要为刮刮卡生成代码。刮刮卡的印刷方式与您用于为手机充电的刮刮卡相同。

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

我想制作一个 PHP 程序来生成这些代码,所以我肯定需要通过一个 PRNG(伪随机数生成器)。我的限制是:

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

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

所以我的问题是:

- 使用 PRNG 是否正确?

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

- 行业使用什么标准?

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

感谢您的时间和答案。

4

1 回答 1

3

是的,PRNG 在稍作调整后就可以正常工作了。

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

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

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

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

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

注意:因为这里不需要 varchar char 是最好的选择。

将 Mysql 表引擎保留为 MISAM 以便快速比较。

于 2011-09-20T21:06:22.430 回答