我需要创建一个自动生成的密钥并通过邮件发送以进行注册过程。密钥的长度应至少为 50 个字符(如 facebook Appid),并且必须是唯一的。我使用 php 技术和 mysql 作为数据库。
我是 php 新手,需要帮助。
正好 50 个字符和密码安全的字符串使用。
openssl_random_pseudo_bytes(50);
您不需要在确认码中包含用户名等。您只需要一个随机字符串。这是一个将为您生成加密安全字符串的函数。
function random_string($length = 50)
{
$bytes = openssl_random_pseudo_bytes($length * 2);
return substr(str_replace(array('/', '+', '='), '', base64_encode($bytes)), 0, $length);
}
您可以从任何字符串生成哈希。
只要源字符串是唯一的,散列也是唯一的。
例如,您可以使用带有用户 ID 的铭文时间戳(以避免在同一秒内有 2 个用户注册的情况下重复),然后使用任何散列函数(md5 用于 32 个字符,sha1 用于 40,另一个用于 50)
unqid 是从当前时间生成的,并且是唯一的(99.99% 的时间,因为如果在同一微秒内调用 uniqid 可能会发生冲突)。
openssl_random_pseudo_bytes 可能会生成随机字符串,但在文档中对实现的指定不够充分,无法确定碰撞风险。您需要使用 bin2hex 将其转换为更标准的字符串,以便在 url 中安全使用。
您可以使用此功能来做到这一点
function genRandomString() { $length = 10;
$characters = "0123456789abcdefghijklmnopqrstuvwxyz";
$string ="" ;
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters))];
}
return $string;
}
您可以使用任意数量的长度