我会尽量简单,明确和直接。我的问题如下:我有一个我需要的项目 为刮刮卡生成代码。刷卡的打印方式与您用来充电的方式相同 移动电话。
系统是人们购买卡片,获取卡片上的代码,然后调用TOIP服务器(Asterisk)并插入代码以访问服务。它有三次尝试输入正确的代码。
我想制作一个PHP程序来生成这些代码,所以我当然需要经过一个PRNG(伪随机数生成器)。我的约束是:
- 正如人们所说的那样,代码不应该太长,而应该足够长以确保安全。
- 当输入的代码进行比较时,我需要系统足够快 和存储在数据库中的那个(用于统计目的)。
所以我的问题是:
- 使用PRNG是对的吗?
- 如果是的话,你知道一个强大到足以产生好的随机数吗?
- 行业使用的标准是什么?
- 如果对数百万个代码进行比较,如何使比较算法足够快?
感谢您的时间和答案。
答案 0 :(得分:3)
是的,PRNG在稍微调整之后会正常工作。
http://en.wikipedia.org/wiki/Random_password_generator
您可以参考上面链接中的密码生成器代码。你必须确保第一个数字不是0并且只使用不是字母的数字。
生成一个数字后,您必须在插入之前检查它是否存在于DB中。
通常,行业使用16个字符/数字。您还可以生成20位数字,以使整个过程更快。
为了使匹配更快,您必须索引数据库中的字段。最有可能是char(16)或char(20)。
注意:由于这里不需要varchar,因此char是最佳选择。
将Mysql表引擎保留为MYISAM以进行快速比较。