生成唯一随机密钥的最简单方法

easiest way to generate an unique and random key

问题不是 'how to' 生成这样的密钥。有很多答案。有些太简单了,比如时间戳,但有些不够独特,比如一些带有 rand() 的字符。

我的想法是,为什么不把两者结合起来呢? 如果我以秒或毫秒为单位获取时间戳,并在两者之间添加随机字符(但没有数字),那不会产生随机且唯一的字符串吗?

这个问题并不特定于一种编程语言,而是为了给你一些我在 php:

中编写的代码
$token = (string) preg_replace('/(0)\.(\d+) (\d+)/', '', microtime());
$l = strlen($token);
$c = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for($i = 0; $i < $l; $i++){
    $token = substr_replace($token, $c[rand(0, 51)], rand(0, $l+$i), 0);
}

echo $token;

我真的很期待一些随机专家的回答!

谢谢 ;) 莱尼

我更喜欢生成 GUID。这里有一些代码可以为您做到这一点。

 function getGUID(){
        if (function_exists('com_create_guid')){
            return com_create_guid();
        }else{
            mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up.
            $charid = strtoupper(md5(uniqid(rand(), true)));
            $hyphen = chr(45);// "-"
            $uuid = chr(123)// "{"
                .substr($charid, 0, 8).$hyphen
                .substr($charid, 8, 4).$hyphen
                .substr($charid,12, 4).$hyphen
                .substr($charid,16, 4).$hyphen
                .substr($charid,20,12)
                .chr(125);// "}"
            return $uuid;
        }
    }

        $GUID = getGUID();
        echo $GUID;

这是我的消息来源。 http://guid.us/GUID/PHP