PHP生成随机密码
使用PHP生成16位随机密码,要求必需同时包含大写字母、小写字母、数字、特殊符号,且第一位必需大写
<?php
function generatePassword() {
// 定义字符集
$uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$lowercase = 'abcdefghijklmnopqrstuvwxyz';
$numbers = '0123456789';
$specialChars = '!@#$%^&*()_+-=[]{}|;:,.<>?';
// 确保每种字符至少出现一次
$password = $uppercase[random_int(0, strlen($uppercase) - 1)]; // 第一位是大写字母
$password .= $lowercase[random_int(0, strlen($lowercase) - 1)]; // 第二位是小写字母
$password .= $numbers[random_int(0, strlen($numbers) - 1)]; // 第三位是数字
$password .= $specialChars[random_int(0, strlen($specialChars) - 1)]; // 第四位是特殊符号
// 剩余的12位随机字符
$allChars = $uppercase . $lowercase . $numbers . $specialChars;
for ($i = 4; $i < 16; $i++) {
$password .= $allChars[random_int(0, strlen($allChars) - 1)];
}
// 将密码转换为数组,方便操作
$passwordArray = str_split($password);
// 打乱除第一位之外的字符
$shuffledPart = array_slice($passwordArray, 1);
shuffle($shuffledPart);
// 重新组合密码,确保第一位是大写字母
$password = $passwordArray[0] . implode('', $shuffledPart);
return $password;
}
// 生成并输出密码
echo generatePassword();
?>