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();
?>

标签:php, 密码, 生成, 随机

添加新评论