生成唯一随机密钥的最简单方法
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
问题不是 '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