21 ^ 6 = 85766121种可能性.
使用DB并存储使用的值很糟糕.如果您想伪造随机性,可以使用以下内容:
减少到19个可能的数字,并利用p为奇数素数的p ^ k组总是循环的事实.
取7 ^ 19的顺序组,使用生成器co-prime到7 ^ 19(我将选择13 ^ 11,你可以选择任何不能被7整除的东西).
然后以下工作:
$previous = 0;
function generator($previous)
{
$generator = pow(13,11);
$modulus = pow(7,19); //int might be too small
$possibleChars = "ACEFHJKMNPRTUVWXY49";
$previous = ($previous + $generator) % $modulus;
$output='';
$temp = $previous;
for($i = 0; $i < 6; $i++) {
$output += $possibleChars[$temp % 19];
$temp = $temp / 19;
}
return $output;
}
它会循环遍历所有可能的值,看起来有点随机,除非他们去挖掘.一个更安全的替代方案是乘法组,但我已经忘记了我的数学:(