我有一个小型内部项目,可以将偶尔的条目插入 MySQL 数据库。我有一个名为“idChar”的列,如果我将它的值设置为使用 62 个可能的长度为 31 的字符的随机生成的字符串。
今天我发现一个新条目恰好与几个月前的条目具有相同的 idChar。我现在在保存之前检查重复条目,但这让我想到了发生这种情况的可能性,我很想知道我生成这些随机密钥的实现是否有缺陷。得到一个副本应该大约是 1 in 62^31 对吧?
function getCode($len)
{
//$len = 10;
$base='ABCDEFGHIJKLMNOPQRSTWXYZabcdefghijklmnopqrstwxyz123456789';
$max=strlen($base)-1;
$linkCode='';
mt_srand((double)microtime()*1000000);
while (strlen($linkCode)<$len+1)
$linkCode.=$base{mt_rand(0,$max)};
return $linkCode;
}
$idChar=getCode(30);
//code to insert into MySQL here