php - 6300万奖品代码如何生成

标签 php

我正在尝试想出一种“智能”和“安全”的方式来生成大约 6300 万个唯一代码以用于比赛。代码的长度约为 10 个字符。

有没有人做过类似的事情或知道这个问题可能产生的任何“障碍”?我们如何最大限度地减少某人猜出密码的可能性?

这个项目将用 PHP 完成,但这并不重要,这里更多的是逻辑问题。

非常感谢任何反馈。

更新 澄清一下,它将是 10 个字符,不区分大小写的字母数字值。 A-Z0-9

最佳答案

语法:

您可能会有人复制这些代码,这意味着这些代码应该很容易复制。正如 Gamecat 指出的那样,10^10 太小了。 kgiannakakis 有一个更好的主意,但这会导致另一个问题:“1”看起来很像“I”。 “0”、“C”、“O”和“Q”也很相似。这不是一个大问题。定义一个安全的字母:“0123456789ABDEFGHJKLMNPRSTUVXYZ”(省略 COIQ)从评论中:根据您选择的字体,5/S 和 U/V 也可能在视觉上不明确;根据需要替换。这是一个 32 符号(5 位)的代码。 10 个字符的代码是一个 50 位的数字。这些应该是相当简单的生成、排序、复制、比较等。被猜到的几率约为 0.63E-7

由于代码太长无法记住,用户在复制代码时需要一个休息点。因此,将字符串分成两三部分,并确保输入字段与此分割相匹配。

例如AKG3L-45TEE => 两组 5 个字符,即使您不记得 5 个字符,也可以轻松找到停止阅读的点。


如何生成它们:

这很简单。您不需要特别复杂的算法来生成候选者。您可以为每个所需的代码生成 10 个随机数,从每个数字中取 5 位(通常中间位是最好的,例如 (rand()/64) 模 32)。使用此值 [0-31] 作为字母表的索引。用这个字符串作为主键创建一个数据库表,并插入直到表有 6300 万个条目。您可能希望在此表中添加“生成日期”和“兑换日期”。

关于php - 6300万奖品代码如何生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1073956/

相关文章:

PHP preg_split Apache 和 Powershell 等价物

php - 需要在 Web 开发抽象的所有层中访问相同的 bool 结果

php - Symfony 表单字段即使有错误也有效?

php - 如何在mysql中进行多表选择中的文本搜索

php - 共享单元测试装置

php - 10月CMS安装MYSQL报错

php - MySQL 和 jQuery : Store dynamic generated content in database

PHP从数字字符串中删除逗号

php - MySql 数据库结构按顺序存储项目列表

PHP 动态设置对象属性