问题不在于如何'生成这样一个密钥。有很多答案。有些像时间戳一样简单,但是其他一些东西并不像rand()中的一些字符那么独特。
我想知道的是,为什么不将两者结合起来? 如果我在几秒或几毫秒内取时间戳并在其间添加随机字符(但没有数字),那么会不会产生随机且唯一的字符串?
问题并不是针对一种编程语言,而是为了给你一些我用php编写的代码:
$token = (string) preg_replace('/(0)\.(\d+) (\d+)/', '$3$1$2', 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;
我真的很期待一些随机性的答案!
谢谢;) 莱尼
答案 0 :(得分:2)
我更喜欢生成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